直接向JavaScript构造函数添加方法和使用prototype添加方法有什么区别
What is the difference between adding a method to a JavaScript constructor directly and adding a method using prototype?
我使用的是John Resig的JavaScript类定义样式。下面是一个示例类。
var Person = Class.extend({
init: function(isDancing){
this.dancing = isDancing;
},
dance: function(){
return this.dancing;
}
});
定义舞蹈方法的另一种方法是:
Person.prototype.dance = function(){
return this.dancing;
};
我喜欢使用第一种方法,但有人建议我使用效率低。这两种方式有什么区别?
我自己刚刚找到解决方案。
John Resig的扩展函数会根据作为参数传递的对象自动创建一个构造函数。在第一种方式中,对象中的舞蹈方法将自动分配给返回对象的原型。这意味着返回的构造函数(类)实际上将使用第二种样式。所以没有必要使用第二种方式。
因此,当使用John Resig的代码时,第一种方法并不是低效的。
相关文章:
- 在对象中添加方法时出现问题
- 什么意思是“;向原型添加方法”;
- jQuery验证器添加方法未定义
- 向通过ReST JSON调用生成的Angular Javascript对象添加方法
- 向React中的高阶组件添加方法
- 向JavaScript对象添加方法
- 如何向[]添加方法
- 如何在流星js中为对象添加方法
- jQuery.validation 在生日年龄验证中添加方法错误
- 使用 IE8 添加方法的 JavaScript 错误
- 向方法添加方法
- 如何在 Javascript ES6 中向类添加方法
- Javascript:向对象类添加方法的优缺点是什么
- 如何更改“动物”的原型并添加方法“sayName”来打印语句
- 如何在 Illustrator CS5.1+ 中创建画板对象的添加方法所需的矩形对象
- 如何在 nodejs 中全局添加方法到 JSON、Date 或其他“本机”对象
- 什么类/类型是未定义的,是否可以向其扩展/添加方法
- 为什么在 javascript 中向数组原型添加方法会破坏 for 循环上的迭代
- 向对象添加方法
- 动态添加方法到对象