function person(name)
person.prototype.printname = function
() var person1 = new person('byron'); //例項化物件
console.log(person1.__proto__); //person
console.log(person1.constructor); //自己試試看會是什麼吧
console.log(person.prototype); //指向原型物件person
var person2 = new person('frank');
複製**
// 建構函式表示方法1
// 不需要new生成例項
function animal (name, energy)
// 建構函式表示方法2
// 需要new生成例項
function animal (name, energy)
const leo = new animal('leo', 7)
const snoop = new animal('snoop', 10)
複製**
// 警告
function animal (name, energy)
this.name = name
this.energy = energy
}// 生成例項
function animal (name, energy)
this.name = name
this.energy = energy
}複製**
function animal (name, energy)
animal.prototype.eat = function (amount) is eating.`)
this.energy += amount
}animal.prototype.sleep = function (length) is sleeping.`)
this.energy += length
}animal.prototype.play = function (length) is playing.`)
this.energy -= length
}const leo = new animal('leo', 7)
for(let key in leo) . value: $`)
}複製**
for(let key in leo) . value: $`)
}}複製**
function animal (name, energy)
animal.prototype.eat = function (amount) is eating.`)
this.energy += amount
}animal.prototype.sleep = function (length) is sleeping.`)
this.energy += length
}animal.prototype.play = function (length) is playing.`)
this.energy -= length
}const leo = new animal('leo', 7)
leo.hasownproperty('name') // true
leo.hasownproperty('energy') // true
leo.hasownproperty('eat') // false
leo.hasownproperty('sleep') // false
leo.hasownproperty('play') // false
複製**
function animal (name, energy)
function
user
() {}
const leo = new animal('leo', 7)
leo instanceof animal // true
leo instanceof user // false
複製**
它接受乙個物件的引數。
object.create = function (objtodelegateto)
複製**
它建立乙個物件,該物件在失敗的查詢中委託給引數物件。
object.create = function (objtodelegateto)
fn.prototype = objtodelegateto
return new fn()
}複製**
var obj =
var objinstance1 = object.create(obj)
var objinstance2 = object.create(obj)
objinstance1.b.push('green')
objinstance2.b // ['red', 'blue', 'green']
// 對於基本型別會重新賦值
如:objinstance1.a = 3
console.log(objinstance1) //
複製**
它返回新建立的物件。
function
animal
() function cat(name, color)
// 將cat的prototype物件指向乙個animal的例項,相當於完全刪除了prototype 物件原先的值,然後賦予乙個新值
cat.prototype = new animal();
// 任何乙個prototype物件都有乙個constructor屬性,指向它的建構函式。
// 如果沒有"cat.prototype = new animal();"這一行,cat.prototype.constructor是指向cat的;
// 加了這一行以後,cat.prototype.constructor指向animal。
// 顯然會導致繼承鏈的紊亂(cat1明明是用建構函式cat生成的),
// 因此我們必須手動糾正,將cat.prototype物件的constructor值改為cat。
cat.prototype.constructor = cat;
var cat1 = new cat("大毛", "黃色");
// console.log(cat1.species)
console.log(cat1)
複製**
function extend(child, parent) ;
f.prototype = parent.prototype;
child.prototype = new f();
child.prototype.constructor = child;
child.uber = parent.prototype;}
extend(cat,animal);
var cat1 = new cat("大毛","黃色");
alert(cat1.species); // 動物
複製**
物件導向(基礎oop)之進入繼承
1.繼承的目的雖然是讓子類去擁有父類的成員,但是繼承一定不要亂繼承 不要僅僅是為了去得到某1個類的成員而去繼承.滿足繼承的關係 當滿足is a 的關係的時候,就可以繼承.當子類是1個父類的時候 那麼就可以繼承.student person class student person 麻雀 鳥 汽車 交...
JS物件導向 繼承
參考博文 一 物件導向的繼承 1 解析 在原有物件的基礎上,略作修改,得到乙個新的物件,並且不影響原有物件的功能 2 如何新增繼承 拷貝繼承 屬性 call 方法 for in 繼承 子類不影響父類,子類可以繼承父類的一些功能 復用 屬性的繼承 呼叫父類的構造1函式 call 方法的繼承 for i...
js 物件導向 繼承
繼承 將方法的定義放在建構函式中,每建立乙個新物件,都會重複建立該方法一模一樣的副本,浪費記憶體。解決 如果多個子物件都要使用乙個相同的方法時,應該把這個方法放在一種原型物件中,建構函式中不再包含方法定義。原型物件 乙個型別中,專門為所有子物件集中儲存共有方法的物件。同一型別下多個子物件需要用乙個共...