functionfoo()
typeof
foo.prototype;
foo.prototype.x = 1;
var obj3= new
foo();
obj3.x;
obj3.y;
foo構造器 this指向obj3物件。obj3的原型(__proto__)會指向foo.prototype。
prototype的作用是foo.prototype會用作new物件的原型。
即obj3.__proto__ == foo.prototype //ture
foo.prototype結果:constructor : ƒ foo()
__proto__ : object
constructor屬性指向foo物件本身
即foo.prototype.constructor == foo(true)
__proto__ 是非標準原型。此處是foo.prototype的原型
一般的物件比如{}都有__proto__屬性
注意:prototype是函式的乙個內建物件。__proto__是物件的非標準原型
functionperson(name,age)
一般呼叫this指向全域性物件,瀏覽器中為window
new呼叫,this指向乙個空物件,這個空物件的原型為person.prototype。this作為return值。
object.create(person.prototype)建立乙個空物件,並且這個物件的原型指向person.prototype
var o = };var p =object.create(o)
p.__proto__ == o //
true
以上p的原型指向o
var a =a.__proto__ == object.getprototypeof(a) //
true
object.getprototypeof獲取物件的原型
js的繼承方法概念
原型繼承 借用建構函式 繼承不了 上的 組合繼承 es6繼承 function person person.prototype.sayhi function class student extends person 上面是繼承,在這裡可以寫其它的方法fn const s newstudent con...
js 物件導向 oop 及繼承方式實現 對比
function person name person.prototype.printname function var person1 new person byron 例項化物件 console.log person1.proto person console.log person1.const...
js組合繼承與寄生繼承
組合繼承 function parent parent,prototype.eat function function clild name 1 重寫原型物件,覆蓋之前的,需重新指向建構函式,2 第二次執行這個函式,避免了屬性共享 clild.prototype new parent clild.p...