资讯专栏INFORMATION COLUMN

关于JS Object.create方法

renweihub / 3374人阅读

这个方法很强大,也能完成一些JS内的继承。探索ing.......

    var q;
    var p = {x:1,y:2};
    q = Object.create(p);                    // 调用方法,返回新对象
    q.x = "x";                                // q的自有属性x
    console.log(q.x+" | "+q.__proto__.x);    // x | 1    q.x,q.y不是q对象的自有属性
    p = {x:"px"};
    console.log(q.x+" | "+q.__proto__.x);    // x | 1    重新改变p对象,不收影响
    q = Object.create(p);
    console.log(q.x+" | "+q.__proto__.x);    // px | px    调用方法之后,对象改变
    q.__proto__.test = "test";
    console.log(p.test);                    // test        看来方法是返回一个新对象引用,这个引用是指向p对象的
    // var a = Object.create(b);            a,b均为对象,则a._proto_指向b引用的对象,互相可以读写
    console.log(q.__proto__===p);            // true
    
    // 让我们还原一下
    p = {x:1,y:2};
    q = Object.create(p);
    // 这两个对象像是互相引用的关系,就像下面这样
    
    var a = {a1:"a1"};
    var b = {b1:"b1",b2:a};
    a.a2 = b;
    console.log(a.a2.b1);            // b1
    console.log(b.b2.a1);            // a1
    // 有同学会问为什么不能这样?
    var x = {x1:"x1",x2:y};
    var y = {y1:"y1",y2:x};
    console.log(x.x2.y1);            //  "Uncaught TypeError: Cannot read property "y1" of undefined"
    // 哦别忘了,JS是从上到下执行的,你在x2赋值y的引用时,y对象还没没创建呢

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83284.html

相关文章

  • 关于javascript的原型和原型链,看我就够了(一)

    摘要:要用作原型的对象。函数对象可以创建普通对象,这个我们上面讲过了回顾一下这是一个自定义构造函数普通对象没法创建函数对象,凡是通过创建的对象都是函数对象,其他都是普通对象通常通过创建,可以通过来判断。 关于js的原型和原型链,有人觉得这是很头疼的一块知识点,其实不然,它很基础,不信,往下看要了解原型和原型链,我们得先从对象说起 创建对象 创建对象的三种方式: 对象直接量 通过对象直接量创建...

    MoAir 评论0 收藏0
  • 关于原生js的一些研究

    摘要:这个属性本身又是一个类型的对象,原型对象都包含一个指向构造函数的指针,而每一个实例也都包含一个指向原型对象内部的指针。 前阵子忙于准备CET-6,没时间更新文章,之后大概一个月将忙于准备期末考,也应该不会更新了,今天趁周末有时间再更新一篇最近研究的一些东西吧。 callee和caller function inner(){ console.log(arguments.calle...

    wind3110991 评论0 收藏0
  • javascript基础篇:关于js面向对象的理解

    摘要:关于中面向对象的理解面向对象编程它是一种编程思想我们的编程或者学习其实是按照类实例来完成的学习类的继承封装多态封装把实现一个功能的代码封装到一个函数中一个类中以后再想实现这个功能,只需要执行这个函数方法即可,不需要再重复的编写代码。 关于js中面向对象的理解 面向对象编程(oop) 它是一种编程思想 (object-oriented programming ), 我们的编程或者学习其...

    roadtogeek 评论0 收藏0
  • javascript基础篇:关于js面向对象的理解

    摘要:关于中面向对象的理解面向对象编程它是一种编程思想我们的编程或者学习其实是按照类实例来完成的学习类的继承封装多态封装把实现一个功能的代码封装到一个函数中一个类中以后再想实现这个功能,只需要执行这个函数方法即可,不需要再重复的编写代码。 关于js中面向对象的理解 面向对象编程(oop) 它是一种编程思想 (object-oriented programming ), 我们的编程或者学习其...

    newtrek 评论0 收藏0

发表评论

0条评论

renweihub

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<