javascript - 这些代码有什么区别?

标签 javascript jquery prototype-oriented

function Demo() {
   this.show1 = function() { alert(1) }
}

Demo.prototype.show2 = function() { alert(2) }

var d = new Demo
d.show1()
d.show2()

show1show2都可以报警号码。

这两者有什么区别吗?

最佳答案

是的,如果您在构造函数内初始化该方法,例如(this.method = function () {};),所有 1000 个对象实例都将拥有一个函数对象作为自己的属性。

嗯,这是最轻量级的方法,假设你在某个构造函数的原型(prototype)中有一个方法,并且你创建了 1000 个对象实例,所有这些对象都会在其原型(prototype)中包含你的方法链,并且所有这些都只会引用一个函数对象。

在第二种情况下,只有那些在 Demo.prototype.show2 = function(){alert(2)} 之后创建的对象才会获取代码。 :)

示例

您的代码

function Demo(){
   this.show1 = function(){alert(1)}
}

Demo.prototype.show2 = function(){alert(2)}

var d = new Demo
d.show1()
d.show2()

其他案例

function Demo(){
   this.show1 = function(){alert(1)}
}

var d = new Demo

Demo.prototype.show2 = function(){alert(2)}

d.show1()
d.show2()

关于javascript - 这些代码有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766791/

相关文章:

javascript - 如何使用nodejs更新for循环内数组中的单个键值?

javascript - 用选择的颜色(描边样式)html5填充 Canvas

javascript - 从回调中获取值(value)

javascript - 根据下拉列表和输入字段搜索数据表

javascript - 你如何在 JavaScript 中进行继承而不在子类的所有实例之间共享父类(super class)的同一个实例?

javascript - 检查 div 是否有控件 Javascript

javascript - 多复选框组值的多维数组 jQuery 后数组 AJAX

javascript - JavaScript .prototype 如何工作?

JavaScript 行为重用 : What side effects will this approach have?

javascript - 单击外部 div 和 sibling 时隐藏 div