为了账号安全,请及时绑定邮箱和手机立即绑定

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下载
官方微信

举报

0/150
提交
取消