object类能创建对象吗,js定义object对象

  object类能创建对象吗,js定义object对象

  如何使用Object()函数创建对象?下面这篇文章介绍用object()构造函数创建对象的方法(用另外三种创建对象的方法),希望对你有帮助!

  

new Object()创建对象

   JavaScript原生提供Object对象(注意首字母O大写),其他所有对象都从这个对象继承。对象本身也是一个构造函数,可以直接生成新的对象。

  Object()函数可以将给定的值包装为一个新对象。

  语法:

  新对象()

  新对象(值)参数值是任何类型的可选参数。

  如果value值为null或未定义或未传递,将创建并返回一个空对象;

  如果value值是基本类型,将构造其包装类的对象,并返回与给定值对应的类型的对象。

  如果该值是引用类型,则仍会返回该值。

  如果给定的值是一个现有的对象,这个现有的值(相同的地址)将被返回。

  var obj=new Object();//创建了一个空对象

  张三丰;

  obj.name=18//字面上创建对象是不一样的。这里需要使用=assignment来添加属性和方法。

   nan ;//属性和方法后跟;目标

  obj.sayHi=function() {

  console . log( hi );

  }

  console . log(obj . uname);

  console . log(obj[ age ]);

  说明:通过编写new Object()生成一个新对象,相当于字面上的写法o={}。

  var O1={ a:1 };

  var o2=新对象(O1);

  o1===o2 //真

  编号的新对象(123)实例

  //真与其他构造函数一样,如果要在Object对象上面部署一个方法,有两种做法。

  (1)部署在对象本身的对象

  例如,在Object对象上定义一个print方法来显示其他对象的内容。

  object . print=function(o){ console . log(o)};

  var o=new Object();

  对象.打印(o)

  //Object(2)部署在Object.prototype对象中。

  所有构造函数都有一个指向原型对象的原型属性。在Object.prototype对象上定义的所有属性和方法将由所有实例对象共享。(有关原型属性的详细说明,请参见第《面向对象编程》章。)

  object . prototype . print=function(){ console . log(this)};

  var o=new Object();

  O.print() //Object上面的代码在Object.prototype中定义了一个print方法,然后生成Object的一个实例o。o直接继承Object.prototype的属性和方法,可以自己调用。也就是说O对象的print方法本质上是调用Object.prototype.print方法。

  可以看到,上面两种打印的方法虽然功能相同,但是用法不同,所以需要区分“构造函数方法”和“实例对象方法”。

  Object()

  对象本身是一个函数。当它用作工具方法时,任何值都可以变成对象。这种方法通常用于确保某个值必须是一个对象。

  如果参数是原始类型的值,Object方法将返回相应包装对象的实例。

  Object() //返回一个空对象

  Object //true的Object()实例

  Object(undefined) //返回空对象

  对象的对象(未定义)实例//true

  Object(null) //返回一个空对象

  Object的Object(null)实例//true

  Object(1) //相当于新的数字(1)

  Object(1)Object//true的实例

  数字//true的对象(1)实例

  Object(foo) //等效于新字符串( foo )

  Object的Object( foo )instance//true

  字符串的object( foo )instance//true

  Object(true) //等效于new Boolean(true)

  Object(true)Object//true的实例

  boolean//true的Object (true)实例上面的代码表明Object函数可以将各种值转换成相应构造函数生成的对象。

  如果Object方法的参数是一个对象,它总是返回原始对象。

  var arr=[];

  Object(arr) //返回原始数组

  Object(arr)===arr //true

  var obj={ };

  Object(obj) //返回原始对象

  Object(obj)===obj //true

  var fn=function(){ };

  Object(fn) //返回原函数

  Object(fn)===fn //true使用这个,你可以写一个函数来判断一个变量是否是对象。

  函数isObject(value) {

  返回值===对象(值);

  }

  isObject([]) //true

  is object(true)//false

扩展知识:其他创建对象的三种方法

  1. 对象字面量{…}

  对象的字面方式是最常用的方式之一,它可以快速创建带有花括号{.}包含属性。

  var obj 1={ };

  obj 1 . name= Tom ;

  var obj2={姓名:汤姆,年龄:12 };

  var name=Tom ,年龄=12;

  var obj3={ name: name,age:age };

  //ES2015,当属性名和变量名相同时,可以缩写为:

  var obj3={姓名,年龄};

  //扩展属性,ES2018的新特性,可用于克隆或合并对象,浅层拷贝,不包括原型

  var obj4={.obj 3 };2. Object.create()

  Object.create()方法创建一个新对象,使用现有对象提供新创建对象的__proto__。

  /**

  *创建具有指定原型并包含指定属性的对象。

  * @param o新创建对象的原型对象。可能是空的。

  * @param properties包含一个或多个属性描述符的JavaScript对象。

  */

  create(o: object null,properties?PropertyDescriptorMap):any;

  接口属性描述符映射{

  [s:string]:property descriptor;

  }

  接口属性描述符{

  可配置?布尔型;

  可枚举?布尔型;

  价值?任何;

  可写?布尔型;

  得到?():任意;

  设置?(v:any):void;

  } var obj 1=object . create(null);

  object . getprototypeof(obj 1)===null;//真

  var proto={ };

  var obj 2=object . create(proto);

  object . getprototypeof(obj 2)===proto;//真

  var obj3=Object.create({},{ p:{ value:42 } });

  //属性描述对象中省略的属性默认为false,所以P不可写、不可枚举、不可配置。

  object . getownpropertydescriptors(obj 3);//p: {value: 42,可写:false,可枚举:false,可配置:false}

  //创建一个可写、可枚举、可配置的属性p

  var obj4=Object.create({},{

  p: {值:42,可写:真,可枚举:真,可配置:真}

  });

  //不能同时指定访问器(get和set)和值或可写属性

  var obj4=Object.create({},{

  p: {

  //value: 42,//不能与get set同时存在。

  ///writable: true,///不能与get set同时存在。

  可枚举:真,

  可配置:真,

  get: function() { return 10 },

  set:function(value){ console . log( Setting ` p ` to ,value);}

  }

  });3. Object.assign()

  Object.assign()方法不是直接用来创建对象的,但是可以达到创建对象的效果,所以这里也作为创建对象的一种方式。

  Object.assign()方法用于将所有自身的值从一个或多个源对象复制到目标对象。返回目标对象。

  Object.assign(target,…sources)如果目标对象或源对象具有相同的属性,后一个对象的属性将覆盖前一个对象的属性。只有源对象本身的可枚举属性会被复制到目标对象。源对象原型上的对象未被处理。此方法使用源对象的Get和目标对象的Set来获取和设置值。var O1={ name: Tom };

  var O2={ name: Jerry };

  Var o3=Object.create(o2,{//o2是o3的原型,name: Jerry 是原型上的属性。

  答:{value: 42 },//不可枚举

  b: {值:42,可写:false,可枚举:true,可配置:false },

  c: { enumerable: true,get:function(){ return 10;} }

  });

  var obj1=Object.assign(o1,O2);

  obj1===o1//真

  obj1//{姓名:汤姆,b: 42,c: 10}

  object . getownpropertydescriptors(obj 1);//不会复制该属性。

  /* b:{值:42,可写:真,可枚举:真,可配置:真}

  c:{值:10,可写:真,可枚举:真,可配置:真}

  名称:{value: Tom ,可写:true,可枚举:true,可配置:true} */

  var o4={ a: a ,b: {姓名:汤姆,年龄:18 } };

  var obj2=Object.assign({},O4);

  obj 2 . b===O4 . b;//true,浅拷贝,如果源值是对对象的引用,那么只会拷贝它的引用值。

  //合并对象,后面的属性覆盖前面的。

  var o1={ a: 1,b:1 };

  var o2={ b: 2,c:2 };

  var O3={ a:3 };

  var obj3=Object.assign({},o1,o2,O3);

  obj3//{a: 3,b: 2,c: 2}

  //基本类型会转换成包装器对象,只有字符串的包装器对象才有自己的可枚举属性。

  var obj4=Object.assign({}, abc ,null,true,undefined,10,Symbol( foo ));

  obj4//{0: a ,1: b ,2: c}

  //如果复制过程中出现异常,将终止后续的复制任务,并保留复制的数据。

  var t=Object.create( {},{ b: { value: 42,writable:false } });//b是只读属性。

  Object.assign(t,{a: 1},{a: 2,b: 2,c: 3},{ c:4 });//无法分配给对象“#Object”的只读属性“b”

  t;//{a: 2,b: 42}【相关推荐:javascript学习教程可枚举属性以上是讲在JavaScript中如何使用object()函数创建对象的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: