×

JS原型规则有哪些

作者:andy0012019.05.05来源:Web前端之家浏览:489评论:0
关键词:js原型

JS原型规则有哪些呢?

1. 所有的引用类型(array, function, object)都具有对象特性, 即 可自由扩展属性 (除了null以外)

自由扩展属性就比如:

var obj ={ };                      
obj.a=100;

var arr=[ ];                      
arr.a=100;function fn(){ }    
fn.a=100;

2.  所有的引用类型(array, function, object)都有一个_proto_属性(隐式原型),属性值是一个普通的对象。

console.log(obj._proro_); //_proto_是一个对象
console.log(arr._proro_); //_proto_是一个对象
console.log(fn._proro_);       //_proto_是一个对象

3. 所有的函数,都有一个prototype属性(显示原型),属性值也是一个普通的函数

console.log(fn.prototype); //prototype也是一个对象

4. 所有的引用类型(array, function, object)的_proto_属性值指向它的构造函数的prototype属性值  (构造函数的显式原型===实例对象的隐式原型)。

console.log( obj._proto_ === Object.prototype) //true   因为obj的构造函数就是Object 
console.log( arr._proto_ === Object.prototype) //true   因为arr的构造函数就是Object 
console.log( fn._proto_ === Object.prototype)  //true   因为fn的构造函数就是Object

5. 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的_proto_(即它的构造函数的prototype)中寻找。

function Foo(name,age){
    this.name=name;
}
Foo.prototype.alertName=function(){alert(this.name);}

var f = new Foo('meryl');
f.printName=function(){console.log(this.name);} //printName是对象自身新添的一个属性
f.printName()// this指向f,不用去f的构造函数的原型中找printName这个属性
f.alertName()// this也指向f,其中alertName函数是f对象的原型中的函数

温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://www.jiangweishan.com/article/js82ig88523058.html

网友评论文明上网理性发言 已有0人参与

发表评论:

最新留言

  • CSS66

    关于CSS组合选择符总结得全面,学习了!...

  • 新闻头条

    文章不错支持一下吧...

  • 新闻头条

    文章不错非常喜欢...

  • js666

    promise很强大,可以干好多事情。。。...

  • 子午物联网

    这个博客,由衷的喜欢...

  • 访客

    文章不错,非常喜欢...

  • cnwebe

    新媒体运营交换友情链接https://www.cnwebe.com换吗...

  • admin

    请加上链接...

首页|JavaScript|HTML|HTML4|HTML5|CSS3|开发工具|性能优化|移动开发|前端教程|性能优化|开发工具|酷站欣赏|UI设计|前端教程

Copyright © 2019 Web前端之家(www.jiangweishan.com) 版权所有 All Rights Reserved.
粤ICP备12067512号-1

Copyright Your WebSite.Some Rights Reserved.

Powered By Z-BlogPHP 1.5.2 Zero