资讯专栏INFORMATION COLUMN

Object 提供的对象创建方式

ernest.wang / 2499人阅读

摘要:解读中的方法的第一个参数是待创建对象的原型对象,第二个参数是待创建对象的属性定义。

Object解读

Object中的create方法的第一个参数是待创建对象的原型对象,第二个参数是待创建对象的属性定义。
**属性定义解读如下:**
其中第二个参数是可选的,如果被指定了且不是undefined类型,
一个对象的可枚举的自身的属性(并非原型链上的可枚举属性)
指定的属性描述符将会被添加到新创建的对象,和指定的属性名称一样,
这个参数的形式和使用Object.defineProperties()方法的的第二个参数是一致的。
返回值: 一个以第一个参数为原型对象且含有第二个参数指定的属性的新创建的对象
异常:当第二个参数不是空或者或者是一个普通对象;


示例

//shape -super class
function Shape(){
  this.x=0;
  this.y=0;
};
//super class method
Shape.prototype.move=function(x,y){
    this.x+=x;
    this.y+=y;
    console.info("shape moved....");
};

//Rectangle -sub class
function Rectangle(){
   Shape.call(this);//使用对象冒充实现继承
};

//sub class extends super class
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;

var rect = new Rectangle();

console.log("Is rect an instance of Rectangle?",rect instanceof Rectangle); //will output true
console.log("Is rect an instance of Shape?",rect instanceof Shape);// will output true
rect.move(1,1);// will output "shape moved...."

Object.create的使用范例:

//原型对象
var proto  =  {
    init:function(){
       console.info("init method...");
    },
    service:function(){
       console.info("service method");
    },
    destroy:function(){
       console.info("destroy method..");
    }
 
 }
 //目标对象
 var target = Object.create(proto,{
     k_init:{
        value:function(){
            console.info("k_init method...");
        }
     },
     k_service:{
        value:function(){
            console.info("k_service method...");
        }
     },
     k_destroy:{
        value:function(){
            console.info("k_destroy method...");
        }
     }
});

console.info(target)--->输入如下:

console.info(Object.getPrototypeOf(target))--->输出如下:

未完待续...

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

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

相关文章

  • JavaScript对象

    摘要:对象的分类内置对象原生对象就是语言预定义的对象,在标准定义,有解释器引擎提供具体实现宿主对象指的是运行环境提供的对象。不过类型是中所有类型的父级所有类型的对象都可以使用的属性和方法,可以通过的构造函数来创建自定义对象。 对象 javaScript中的对象,和其它编程语言中的对象一样,可以比照现实生活中的对象来理解。在JavaScript中,一个对象可以是一个单独拥有属性和类型的实体。和...

    xavier 评论0 收藏0
  • js 深入 —— 从数据类型到原型链

    摘要:检测数据类型中可以使用操作符来判断数据类型。调用函数时,某个参数未设置任何值,这时就可以传入,表示该参数为空。我们约定普通函数以小写字母开头,构造函数以大写字母开头。五原型以及原型链未完待续 一、数据类型 在javascript中的数据类型可以分为两种类型,基本数据类型和引用数据类型。其中基本数据类型包括String, Number, Boolean,null,undefined,Sy...

    FWHeart 评论0 收藏0
  • JavaScript核心语法——对象

    摘要:张无忌对象的属性存在对象的属性不存在使用进行判断。张无忌对象的属性存在请先定义对象的属性使用语句进行判断张无忌对象的属性存在删除对象的属性可以用操作符删除一个不是继承而来的属性。 对象 对象的概述 对象是什么 JavaScript中的对象,和其他编程语言中的对象一样。可以对比现实生活中的一些东西来理解他。在JavaScript中,一个对象可以使一个单纯的拥有属性和类型的实体。假如和一个...

    philadelphia 评论0 收藏0
  • JavaScript...对象...

    摘要:对象对象是什么中的对象和其他编程语言中的对象一样可以比照现实上活中的对象来理解它中对象的概念可以比照现实生活中实实在在的物体来理解在中一个对象可以是一个单独的拥有属性和类型的实体拿它和一个杯子做下类比一个杯子是一个对象拥有属性杯子有颜色图案 对象 对象是什么 JavaScript中的对象 和其他编程语言中的对象一样 可以比照现实上活中的对象来理解它JavaScript中对象的概念可以比...

    xuxueli 评论0 收藏0
  • JavaScript中对象个人分享

    摘要:对象对象的概念所谓对象就是是一个拥有属性和方法的集合体对象的分类内置对象原生对象引用类型可以称作为内置对象宿主对象就是寄生在一个东西上的对象比如浏览器提供的对象比如自定义对象开发人员创建的对象对象是什么类型是所有类型的父级创建对象对象的初始 对象 对象的概念 所谓对象就是是一个拥有属性和方法的集合体 对象的分类 内置对象/原生对象: 引用类型可以称作为内置对象 宿主对象: 就...

    cppprimer 评论0 收藏0

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

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