Iar*_*hev 5 javascript prototype new-operator
我正在学习 JavaScript,发现了两种分配原型的方法。
第一个是A.prototype = B.prototype,第二个是A.prototype = new B()
例如:
function A() {
console.log("A!")
}
function B() {
console.log("B!")
}
// First case
A.prototype = B.prototype;
a = new A(); // a instanceof A,B
// Second case
A.prototype = new B();
a = new A(); // a instanceof A,B
Run Code Online (Sandbox Code Playgroud)
更新:
正如 Felix Kling 建议的那样,还有第三种分配原型的方法:
A.prototype = Object.create(B.prototype);
Run Code Online (Sandbox Code Playgroud)
这只是另一种技术。
\n\nA.prototype = B.prototype;\nRun Code Online (Sandbox Code Playgroud)\n\n通过这样做,对B原型的任何更改也会改变A原型,因为它们\xe2\x80\x99是相同的对象,并且\xe2\x80\x99必然会产生不良的副作用。
A.prototype = new B();\nRun Code Online (Sandbox Code Playgroud)\n\n使用这个,我们还可以通过原型实现继承。
\n\n我们通过将原型作为 的实例来创建Aa 。BAB
示例#1:
\n\nfunction A() { console.log("A!")}\nfunction B() { console.log("B!")}\nA.prototype = new B();\na = new A(); \nB.bb=function (){alert(\'\');}\nconsole.log(a.bb()) //Uncaught TypeError: Object #<B> has no method \'bb\' \nRun Code Online (Sandbox Code Playgroud)\n\n现在看看这个:
\n\nfunction A() { console.log("A!")}\nfunction B() { console.log("B!")}\nA.prototype = B.prototype;\na = new A(); \nB.prototype.bb=function (){alert(\'\');}\nconsole.log(a.bb()) //does alert\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |