[英]How to call a constructor method of Parent class from child prototype in javascript?
[英]Call parents constructor and prototype from child object
我試圖理解在JavaScript中調用構造函數和原型方法的方法。
這是我的嘗試:
function A() {
this.getId = function() {
console.log('A constructor - getId');
}
}
A.prototype.getId = function() {
console.log('A prototype - getId');
}
function B() {
A.call(this);
this.getId = function() {
console.log('B constructor - getId');
}
}
B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;
B.prototype.getId = function() {
console.log('B prototype - getId');
}
var p = new A();
var q = new B();
p.getId()
//A constructor - getId
q.getId()
//B constructor - getId
p.constructor.prototype.getId()
//A prototype - getId
q.constructor.prototype.getId()
//B prototype - getId
最后兩種方法是調用原型方法的正確方法嗎?
如何從子對象q調用父級構造函數和原型方法?
所以,我怎么得到
來自q對象的'B prototype-getId'
因為q是B的實例。 B構造函數直接在實例上分配getId方法,這就是您所獲得的方法。 如果您期望在B.prototype上使用一個,則需要刪除(或不分配)該實例上的一個:
// delete getId on instance
delete q.getId;
// Now get inherited getId
q.getId() // B prototype - getId
請注意, delete運算符僅對自己的屬性起作用,而不會刪除[[Prototype]]
鏈上的屬性。
最后兩種方法是正確的方法嗎
- 使用p調用父母原型方法使用
- q
“正確”的意思是它們可以工作,盡管我不會設計這種方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.