【笔记】JavaScript编码规范- 构造函数

在原型对象上定义方法,而不是用新对象重写它。重写使继承变为不可能:重置原型将重写整个基类.

function Jedi() {
console.log('new jedi');
}


// bad
Jedi.prototype = {
fight: function fight() {
console.log('fighting');
},


block: function block() {
console.log('blocking');
}
};


// good
Jedi.prototype.fight = function fight() {
console.log('fighting');
};


Jedi.prototype.block = function block() {
console.log('blocking');
};<strong>
</strong>

关于JavaScript中的prototype可参见 http://www.w3school.com.cn/jsref/jsref_prototype_array.asp

方法应该返回this,有利于构成方法链

// bad
Jedi.prototype.jump = function() {
this.jumping = true;
return true;
};


Jedi.prototype.setHeight = function(height) {
this.height = height;
};


var luke = new Jedi();
luke.jump(); // => true
luke.setHeight(20); // => undefined


// good
Jedi.prototype.jump = function() {
this.jumping = true;
return this;
};


Jedi.prototype.setHeight = function(height) {
this.height = height;
return this;
};


var luke = new Jedi();


luke.jump()
.setHeight(20);

写一个自定义的toString()方法是可以的,只要确保它能正常运行并且不会产生副作用
function Jedi(options) {
options || (options = {});
this.name = options.name || 'no name';
}


Jedi.prototype.getName = function getName() {
return this.name;
};


Jedi.prototype.toString = function toString() {
return 'Jedi - ' + this.getName();
};

Genesis 1:17 And God set them in the firmament of the heaven to give light upon the earth.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值