2019-9-15 seo達(dá)人
原型:函數(shù)中的屬性prototype,她的名字就叫原型??梢酝ㄟ^也只能通過prototype添加可繼承的屬性和方法
原型對(duì)象:函數(shù)中prototype中的proto 和對(duì)象中的proto
先記住原型(prototype)和原型對(duì)象(proto)
下面用代碼解釋原型、原型對(duì)象、 原型鏈
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>對(duì)象</title>
</head>
<body>
<script type="text/javascript">
//創(chuàng)建一個(gè)對(duì)象和一個(gè)函數(shù)
var obj = {}
console.log(obj.proto)//obj有原型對(duì)象
function objFun (){}
console.log(objFun.prototype) //objFun 原型
console.log(objFun.prototype.proto) //原型中有原型對(duì)象
console.log('*華麗的分割線***')
// 以objFun為構(gòu)造函數(shù) (為了把構(gòu)造函數(shù)和普通函數(shù)做區(qū)分,通常把構(gòu)造函數(shù)名首字母大寫)
// 添加屬性和方法
objFun.prototype.name='saozhu'
objFun.prototype.say = function(){
console.log(this.name+'-騷豬')
}
// 創(chuàng)建實(shí)例對(duì)象1
var obj1=new objFun()
console.log(obj1)//打印對(duì)象 空對(duì)象
console.log(obj1.name) //騷豬 證明obj1繼承了objFun函數(shù)的屬性
console.log('*華麗的分割線***')
// 此時(shí)此刻 可以理解原型鏈了:
console.log(obj1.proto=== objFun.prototype)
//true
// 原型鏈?zhǔn)怯袑?shí)例對(duì)象的proto(原型對(duì)象)指向構(gòu)造函數(shù)函數(shù)的原型(prototype)
console.log(objFun.prototype.proto==window.Object.prototype)
// true
// 然后構(gòu)造函數(shù)的原型的原型對(duì)象(prototype.proto)指向window.Object.protype(對(duì)象的原型)
console.log(window.Object.prototype.proto===null)
// 這樣的指向關(guān)系形成的鏈?zhǔn)疥P(guān)系就是原型鏈
//鏈?zhǔn)讲樵?查詢對(duì)象中的屬性和方法,會(huì)根據(jù)這樣的原型鏈查找,直到找到響應(yīng)的屬性和方法.找到window.Object.prototype.proto還沒有值,就返回undeifne
</script>
</body>
</html>
藍(lán)藍(lán)設(shè)計(jì)的小編 http://m.820esy.cn