亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JavaScrip原型理解(二)

標簽:
JavaScript

在JavaScript中,函数本身也是一个包含了属性和方法的对象,每个函数都有prototype属性,而该属性所储存的就是原型对象,我们需要明白的是当一个函数被创建时,属性中就包含了prototype属性,它的初始值是一个“空”对象。

function foo(a,b){return a*b;
}console.log(typeof foo.prototype) //object

我们可以为这个空对象赋予一些属性和方法,这并不会对foo函数本身造成什么影响;因为只有当foo()作为构造器使用时,这些属性才会起作用。

isPrototypeOf()方法

每个对象都会有一个isPrototypeOf()方法,这个方法会告诉我们当前对象是否是另一个对象的原型。

var monkey = {    hair: true,    feeds: 'banans',    breathes: 'air'}function Human(name){    this.name = name;
}
Human.prototype = monkey;var  george = new Human('george');console.log(monkey.isPrototypeOf(george)); // true

我们创建一个叫Human的构造函数,并将其原型属性设置为指向monkey,需要注意的是,我们在这里是预先知道monkey可能是george的原型;然后获得了一个布尔值的回应。那么是否能在不知道某个对象原型是什么情况下,获得对象的原型呢,ES5有一个Obeject.getPrototypeOf()方法。

Object.getPrototypeOf() 方法返回指定对象的原型

Object.getPrototypeOf(george) === monkey //true

hasOwnProperty()方法

用hasOwnProperty()方法可以检测一个属性是存在于实例中,还是存在于原型中。这个方法(不要忘了它是从Object继承来的)只在给定属性存在于对象实例中时,才会返回true。

function A(){
}
A.prototype.name = 'hello';var b = new A();
b.age = 1;console.log(b.hasOwnProperty("age")) // trueconsole.log(b.hasOwnProperty("name")) //false

GitHub:JavaScript-Demo




作者:周希孟
链接:https://www.jianshu.com/p/d382ee17d590


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消