摘要:原型鏈和簡單對象一樣獲取和設(shè)置原型第三層構(gòu)造器的構(gòu)造器如何消除冗余特性的屬性共享屬性是怎么工作的檢查是否在的原型鏈上。
第一層 單一對象 創(chuàng)建對象
對象:字符和數(shù)值的映射
屬性:訪問映射
方法:屬性的值是函數(shù)
this 指向函數(shù)的接受者
var jane ={ //屬性 name="Jane", //方法 describe:function(){ return "Person named"+this.name; }
對象和映射(map) 相同點:https://www.youtube.com/watch?v=VJOTcUsD2kA&t=6m16s
非常動態(tài):自由刪除增加屬性
不同點:繼承(原型鏈繼承)
快速訪問屬性(通過構(gòu)造器器)
第二層 原型鏈 prototype chains引出共享屬性
var jane = { name:"jane", describe:function(){ return "Person named" +this.name; } }; var tarzan = { name:"Tarzan", describe:function(){ return "Person named" + this.name; } };
解決方案:通過原型繼承
jane 和 tarzan 通過共享一個原型對象。
原型鏈和簡單對象一樣
var PersonProto ={ describe:function(){ return "Person named" +this.name; } } var jane = { __proto__:PersonProto, name:"Jane" }; var tarzan = { __proto__:PersonProto, name:"Tarzan" };獲取和設(shè)置原型
es6: _proto _
es5:
Object.create()
Object.getPrototypeOf()
Obejct.create(proto):
var PersonProto = { decribe:function(){ return "Pseson named" + this.name; } }; var jane = Object.create(PersonProto); jane.name="Jane";
Object.getPrototypeOf(obj):
# Object.getPrototypeOf(jane) === PersonProto true第三層 構(gòu)造器
persons的構(gòu)造器
function Person(name){ this.name = name; this.decsribe = funciont(){ return "Person named" + this.name; }; } var jane = new Person ("Jane"); console.log(jane instanceof Person); //true如何消除冗余?
//特性的屬性 function Person(name){ this.name = name; } //共享屬性 Person.prototype.describe = function(){ return "Person named"+ this.name; }instanceof是怎么工作的?
value instanceof Constr
檢查 constructor.prototype是否在value的原型鏈上。
Constr.prototype.isPrototypeOf(value)
目標: employee 繼承 Person
function Person(name){ this.name = name; } Person.prototype.sayHelloto = function (otherName){ console.log(this.name +"says hello to" + otherName); } Person.prototype.describe = function(){ return "Person named" + this.name; }
Employee(name,title)和Person一樣,除了:
其他屬性:title
describe() return "Person named
為了繼承,employee必須做:
繼承Person的屬性
創(chuàng)造屬性title
繼承Person的原型屬性
重寫Person.prototype.describe
function Employee (name,title){ Person.call(this,name); //繼承所有屬性 this.title = title ; //增加title屬性 } Employee.prototype = Object.create(Person.prototype);//繼承原型屬性 Employee.prototype.describe = function(){//重寫原型describe return Person.prototype.describe.call(this)+ "("+this.title+")"; //重寫方法 }
https://www.youtube.com/watch?v=VJOTcUsD2kA&t=6m16s
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78884.html
摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計費價格上面的不...
摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計費價格上面的不...
摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計費價格上面的不...
摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計費價格上面的不...
閱讀 1948·2021-11-24 10:45
閱讀 1452·2021-11-18 13:15
閱讀 4524·2021-09-22 15:47
閱讀 3902·2021-09-09 11:36
閱讀 2006·2019-08-30 15:44
閱讀 3081·2019-08-29 13:05
閱讀 2495·2019-08-29 12:54
閱讀 1986·2019-08-26 13:47