博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型和原型链
阅读量:6974 次
发布时间:2019-06-27

本文共 903 字,大约阅读时间需要 3 分钟。

创建对象有几种方法

// 1.字面量var o1 = {    name: 'o1'};var o2 = new Object({    name: 'o2'});// 2.Object.create()var o3 = Object.create({    name: 'o3'});// 3.构造函数var M = function () {    this.name = 'o3'};var o4 = new M();

image

原型、构造函数、实例、原型链的关系

image

几点说明:

  • 函数声明时自动增加prototype属性,初始化一个空对象
  • 构造函数才会有prototype,普通函数会有__proto__
  • 实例对象才会有__proto__

继承

工作原理:通过原型链的方式找到原型对象,原型对象的方法和属性会共享;实例没有的属性会向上查找

instanceof的原理

image

判断原理:实例对象的__proto__属性和构造函数的prototype属性是不是引用同一个地址,而且实例对象的constructor必须指向对应构造函数

var a = [1, 2, 3];alert(a instanceof Array);  //返回truealert(a instanceof Object);  //返回true alert(a.constructor == Array);  //返回truealert(a.constructor == Object);  //返回false

constructor 更加精确地指向对象所属的类,而对 instanceof 而言,即使是父类也会返回true

练习:如何判断一个对象是否属于某个类

if(a instanceof Person){    alert('yes');}

new运算符(过程、工作原理)

1.创建一个空对象,并且this变量指向改对象,同时还继承了该构造函数的原型2.属性和方法被加入到this引用的对象中去3.最后隐式的返回this对象var obj = {};obj.__proto__ = Base.prototype;Base.call(obj);

转载地址:http://ejrsl.baihongyu.com/

你可能感兴趣的文章
伯炎有话说:六大存疑拷问量子密码的安全
查看>>
云计算理解上四大误区
查看>>
基于SOA的企业IT架构
查看>>
NLP 专题论文解读:从 Chatbot 到 NER | PaperDaily #11
查看>>
最通俗易懂的解读比特币相关原理
查看>>
如何保证CAN网络中通讯的可靠性和节点数
查看>>
用C语言对Gtk+应用进行功能测试
查看>>
无聊时,可以去HASKELL里找点感觉
查看>>
江苏力推“不见面审批” 筹建省级大数据管理中心
查看>>
新华三下一代计算开启新格局
查看>>
杰和N60E-O荣获德国Hardwareinside金牌奖
查看>>
中国工程院院士刘韵洁:中国未来网络创新环境CENI的探索
查看>>
32个云服务通过第三批可信云服务认证 信用体系建设持续加力
查看>>
云生态:云计算棋局中的“胜负手”
查看>>
顺德拟投15亿元建大数据中心
查看>>
隐藏恶意软件的三大黑客技术
查看>>
《Spark与Hadoop大数据分析》——1.3 工具和技术
查看>>
数字时代反思竞争理论
查看>>
思科年中报告:坏人正变得更坏
查看>>
IDC:移动化发展增速 传统企业需要制定全方位移动战略
查看>>