资讯专栏INFORMATION COLUMN

通过Object.create()继承对象的属性和方法

阿罗 / 460人阅读

摘要:简介此方法用于继承指定对象的属性和方法然后去创建一个新的对象调用时需要传入两个参数使用查看结果如下查找对象的属性时会从对象自身顺着原型链一直往上找直到找到返回属性值找不到返回如果对象的属性是不可枚举的那么虽然不能被遍历到但是如果存在还是可以

Object.create()简介
此方法用于继承指定对象的属性和方法然后去创建一个新的对象, 调用时需要传入两个参数[o: object, properties: object]

使用

var obj = {
    id: 123,
    name: "Tom",
    age: 19,
    sex: 9,
    on: {
        eat: () => alert(`it"s time to eat`)
    }
}

var subObj = Object.create(obj || null);

查看结果如下:

查找对象的属性时会从对象自身顺着原型链一直往上找, 直到找到返回属性值, 找不到返回undefined; 如果对象的属性是不可枚举的, 那么虽然不能被for in遍历到, 但是如果存在还是可以被找到的, eg:

首先创建一个对象, 使用Object.defineProperties()方法设置属性, 其中id不可枚举, name可枚举

var obj = {}
Object.defineProperties(obj, {
    id: {
        value: 123,
        enumerable: false
    },
    name: {
        value: "Tom",
        enumerable: true
    }
})

遍历对象, 以验证其可枚举的属性

for (var key in obj) {
    console.log(`{value: key} : ${obj[key]}: ${key}`)
}

查找属性, 发现都是可以获取到的

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

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

相关文章

  • [译] 为什么原型继承很重要

    摘要:使用构造函数的原型继承相比使用原型的原型继承更加复杂,我们先看看使用原型的原型继承上面的代码很容易理解。相反的,使用构造函数的原型继承像下面这样当然,构造函数的方式更简单。 五天之前我写了一个关于ES6标准中Class的文章。在里面我介绍了如何用现有的Javascript来模拟类并且介绍了ES6中类的用法,其实它只是一个语法糖。感谢Om Shakar以及Javascript Room中...

    xiao7cn 评论0 收藏0
  • 创建对象4种方式

    摘要:创建对象的种方式方式一通过对象字面量表示法又称为直接量原始方式。例子在自定义构造函数的内部定义对象的方法函数的值赋给的属性。 创建对象的4种方式 方式一:通过对象字面量表示法(又称为直接量、原始方式)。object literals 方式二:通过new和构造函数Object()、String()等。 方式三:用自定义构造函数来初始化新对象。 方式四:通过Object.create()...

    seanlook 评论0 收藏0
  • JavaScript之对象属性

    摘要:尽管的右操作数是构造函数,但计算过程实际是检测了对象的继承关系。通过创建的对象使用构造函数的属性作为它们的原型。 JavaScript之对象属性 Object.create()继承 ECMAScript 5定义了一个名为Object.create()的方法,它创建一个新对象, 其中第一个参数是这个对象的原型。Object.create()提供第二个可选参数,用以对对象的属性进行进一步描...

    gekylin 评论0 收藏0
  • 彻底理解Javascript中原型链与继承

    摘要:在节中,我们学习到了通过构造函数创建对象的三个重要步骤,其中的一步是把构造函数的对象设置为创建对象的原型。利用而不是直接用创建一个实例对象的目的是,减少一次调用父构造函数的执行。 JavaScript语言不像面向对象的编程语言中有类的概念,所以也就没有类之间直接的继承,JavaScript中只有对象,使用函数模拟类,基于对象之间的原型链来实现继承关系,ES6的语法中新增了class关键...

    ziwenxie 评论0 收藏0
  • 面向对象小九九

    摘要:由构造函数返回的对象就是表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤创建的对象。运算符返回一个布尔值,表示对象是否为某个构造函数的实例。 面向对象 本人能力有限,有误请斧正 本文旨在复习面向对象(不包含es6) 本文学习思维 创建对象的方式,获取对象属性 构造函数,构造函数的new 做了什么 原型与原型对象 原型链 继承(借用构造继承、原型继承、组合继承、寄生组合继承)...

    时飞 评论0 收藏0
  • 整理Object一些方法

    摘要:父类的原型方法子类调用构造函数子类继承父类前面说到的,实际上是将第一个参数无论是原型对象还是普通对象的属性添加到新创建对象的原型中,这也就意味着,通过中定义的属性和方法是无法通过方法添加到新创建对象中的。 ES5 和 ES6 中 Object 添加了很多新的方法,现在很多开源代码中有用到了这些,今天来整理一番。 Object.assign() 这是ES6新添加的方法,Object.as...

    Meils 评论0 收藏0

发表评论

0条评论

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