javascript 写类方式之六
javascript 写类方式之六
发布时间:2016-12-30 来源:查字典编辑
摘要:6、Prototype.js的写类方式复制代码代码如下://prototype.js中的代码varClass={create:functio...

6、Prototype.js的写类方式

复制代码 代码如下:

//prototype.js中的代码

var Class = {

create: function() {

return function() {

this.initialize.apply(this, arguments);

}

}

}

//简化后的

function Clazz() {

return function(){

this.initialize.apply(this,arguments);

}

}

如下步骤写一个类,

复制代码 代码如下:

//类名Person

var Person = Class.create();

//通过原型重写来定义Person

Person.prototype = {

initialize : function(name) {

this.name = name;

},

getName : function() {

return this.name;

},

setName : function(name) {

this.name = name;

}

}

//创建对象

var p = new Person("jack");

console.log(p.constructor == Person);//false

initialize完成对象的初始化(相当于构造函数),方法依次往下写即可。

有个问题,通过这句p.constructor == Person为false可以看到,这正是Prototype.js一个小小的缺陷。原因是重写了Person的原型。为了使constructor能指向正确的构造器,只需在原型重写时维护好constructor属性即可。

复制代码 代码如下:

Person.prototype = {

constructor : Person,//注意这里

initialize : function(name) {

this.name = name;

},

getName : function() {

return this.name;

},

setName : function(name) {

this.name = name;

}

}

好了,这时候p.constructor == Person就是true了。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类