(1)创建一个新的对象,并让this指针指向它; (2)将函数的prototype对象的所有成员都赋给这个新对象; (3)执行函数体,对这个对象进行初始化操作; (4)返回(1)中创建的对象。 代码如下: function BB(a){ this.aa(); alert("s"); } //alert(typeof BB.prototype.constructor); BB.prototype.aa=function(){alert("sss");} var nn=new BB("cc"); //var nn={};BB.apply(nn) //nn=BB.prototype; alert(nn.constructor);
代码如下: //以构造函数方式添加私有属性和方法 function Person(name, age, address) { this.name = name; this.age = age; this.address = address; } //以原型方式添加公有属性、方法 Person.prototype = { constructor: Person, showName: function () { alert(this.name + this.age + this.address); } } //使用 var person = new Person("zhangsan", 22, "中国北京!"); person.showName();
代码如下: //创建基类 function Person(name, age) { this.name = name; this.age = age; } //通过原型方式给基类添加函数(这样可以服用此函数) Person.prototype.showName = function () { alert(this.name); } //创建子类 function Student(name, age, score) { this.score = score; Person.call(this,name,age); } //把父类的实例赋值给子类的原型 Student.prototype = new Person(); //通过原型方式给子类添加函数(这样可以...
js对象生成时: 如:function BB(a){this.a="kkk"} var b=new BB();这时b是对象有了BB的的属性prototype所指向的prototype对象;prototype对象有constructor属性指向BB这个函数;所以alert(b.constructor==BB.prototype.constructor) //true 这里的“有了”的执行过程是先查看b有没有此属性让后去查看prototype里的属性值,不是简单的A=B:如添加:b.constructor="ccc"; 执行:alert(b.constructor==BB.prototype.constructor) //f...
代码如下: //首先创建父类 function Person(name, age, address) { this.name = name; this.age = age; this.address = address; } //创建子类 function Student(score) { this.score = score; //可以用call方法或者是apply方法调用函数的构造函数 //调用父类的构造函数,通过call方法调用Person类的构造函数。这样就会在student中初始化Person对象,student也就有了Person的属性的副本 Person.call(this,"zhangsan",22,"中国北京!...
因为大家总是用面向过程的编程思想来写JS代码,而且也由于网络上充斥了太多小“巧”的JS代码段,很多都是随意而为,很不规范,这也就造成了大家对JS的“误解”,一味的认为它就是一个辅助的小东东,而不适合做大的东西开发。但是自从AJAX兴起后,大量的JS代码编写要求人们具备像写JAVA类似的代码一样,能够面向对象进行开发。 所以下面就结合我自己的体会和所学习的东东和大家一起来学习在JS中如何使用面向对象的编程。其实使用JS进...
this属性表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 我们还可以使用apply和call两个全局方法来改变函数中this的具体指向。 先看一个在全局作用范围内使用this的例子: 代码如下: console.log(this === window); // true console.log(window.alert === this.alert); // true console.log(this.parseInt("021", 10)); ...
我们已经在第一章中使用prototype属性模拟类和继承的实现。 prototype属性本质上还是一个JavaScript对象。 并且每个函数都有一个默认的prototype属性。 如果这个函数被用在创建自定义对象的场景中,我们称这个函数为构造函数。 比如下面一个简单的场景: 代码如下: // 构造函数 function Person(name) { this.name = name; } // 定义Person的原型,原型中的属性可以被自定义对象引用 Person.prototype = { getName: function() { ...
在表单程序中,在页面上需要很多的Js代码来验证表单,每一个field是否必须填写,是否 只能是数字,是否需要ajax到远程验证,blablabla。 如果一个一个单独写势必非常的繁琐,所以我们的第一个目标就是构建一个类似DSL的东西, 用表述的语句而非控制语句来实现验证。 其次一个个单独写的话还有一个问题就是必须全部验证通过才能提交,但是单独验证会因为 这个特征而增加很多额外的控制代码,且经常会验证不全面。所以第二个目标就是能...
1. function func() { this.name = "huhao";//此变量时私有的,只能在new一个新的对象的时候能够访问,比如var obj= new func(); obj.name是可以访问的,并且也是可以修改的,但是只能在新对象中修改, } func.age=“11”; //此变量不能够被继承,只能用func.age来访问 func.prototype.address="安徽省";//此变量不可以直接给 func.address访问,只能给var obj= new func(); obj.address访问,同时在obj.address可以修改的 结论:...
先看调用方式: 代码如下: ajax.request("ajax.html",{v:Math.random(),num:1},function(data){ //do something },get); 方式好像jquery哦。。。还是觉得这样调用方便些。。。 代码如下: var ajax = { //Xmlhttprequest类 Xmlhttprequest :function() { this.xhr =false; }, //外部调用接口 request : function(url,data,callback,type) { //每次都创建一个Xmlhttprequest的对象,使ajax调用互不影响 var xhr = new this.Xmlhtt...
第一种模式:工厂方式 代码如下: var lev=function(){ return "脚本之家"; }; function Parent(){ var Child = new Object(); Child.name="脚本"; Child.age="4"; Child.lev=lev; return Child; }; var x = Parent(); alert(x.name); alert(x.lev()); 说明: 1.在函数中定义对象,并定义对象的各种属性,,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法 2.引用该对象的时候,这里使用...
可以看看这个例子: 代码如下: var a = global; (function () { alert(a); var a = local; })(); 大家第一眼看到这个例子觉得输出结果是什么?‘global'?还是‘local'?其实都不是,输出的是undefined,不用迷惑,我的题外话就是为了讲这个东西的。 其实很简单,看一看JavaScript运行机制就会明白。我们可以把这种现象看做“预声明”。但是如果稍微深究一下,会明白得更透彻。 这里其实涉及到对象属性绑定机制。因为所有...
什么是对象对象是一件事,一个实体,一个名词,概括来说:万物皆是对象一个对象保存了某些信息,并知道如何执行某些操作 对象的状态和行为对象具有状态,状态是对对象的一个或多个属性的描述(如:一个灯 "灯是亮的 这是它的状态")对象具有行为,行为是对象为为改变自身的状态而发生的作用和反作用(如:一个灯 "把灯关了" 这是它的行为) 面像对象中最原始的单元就是对象 封装把数据和影响这个数据的操作聚合成一个对象的行为称为...
面向对象的术语类 类作为设计蓝图来创建对象的代码段,它描述了对象的特征;该对象具有什么样的属性,怎样使用对象完成一些任务,他对事件进行怎样的响应等! 对象 对象是类的一个实例,通常通过调用类的一个构造函数来创建它! 方法 方法是在类中定义的函数,一般而言,一个方法描述了对象可以执行的一个操作! 属性 属性是类中定义的变量,类的属性突出刻画了对象的性质或状态。某些情况下,对象的使用者可能不允许改变对象的...