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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦