聊聊JavaScript中怎么利用Object()函数创建对象

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

聊聊JavaScript中怎么利用Object()函数创建对象

怎么利用Object()函数创建对象?下面本篇文章给大家介绍一下Object()构造函数创建对象的方法(附其他三种创建对象的方法),希望对大家有所帮助!

new Object()创建对象

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

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

语法:

new Object()new Object(value)
登录后复制

参数 value 是任意类型的可选参数。

如果value值是nullundefined或不传时,则会创建并返回一个空对象;

如果value值是一个基本类型,则会构造其包装类的对象,返回一个和给定的值相对应的类型的对象。;

如果value值是引用类型,则仍然返回这个值。

如果给定值是一个已经存在的对象,则会返回这个已经存在的值(相同地址)。

var obj = new Object();      //创建了一个空的对象obj.uname = 'zhangsanfeng';obj.name = 18;       //字面量方式创建对象不同,这里需要用 =  赋值添加属性和方法obj.sex = 'nan';      //属性和方法后面以;结束obj.sayHi = function() {console.log('hi');}console.log(obj.uname);  console.log(obj['age']);
登录后复制

说明:通过new Object()的写法生成新对象,与字面量的写法o = {}是等价的。

var o1 = {a: 1};var o2 = new Object(o1);o1 === o2 // truenew Object(123) instanceof Number// true
登录后复制

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

(1)部署在Object对象本身

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

Object.print = function(o){ console.log(o) };var o = new Object();Object.print(o)// Object
登录后复制

(2)部署在Object.prototype对象

所有构造函数都有一个prototype属性,指向一个原型对象。凡是定义在Object.prototype对象上面的属性和方法,将被所有实例对象共享。(关于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方法。。

可以看到,尽管上面两种写法的print方法功能相同,但是用法是不一样的,因此必须区分“构造函数的方法”和“实例对象的方法”。

Object()

Object本身就是一个函数,本身当作工具方法使用时,可以将任意值转为对象。这个方法常用于保证某个值一定是对象。

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

Object() // 返回一个空对象Object() instanceof Object // trueObject(undefined) // 返回一个空对象Object(undefined) instanceof Object // trueObject(null) // 返回一个空对象Object(null) instanceof Object // trueObject(1) // 等同于 new Number(1)Object(1) instanceof Object // trueObject(1) instanceof Number // trueObject('foo') // 等同于 new String('foo')Object('foo') instanceof Object // trueObject('foo') instanceof String // trueObject(true) // 等同于 new Boolean(true)Object(true) instanceof Object // trueObject(true) instanceof Boolean // true
登录后复制

上面代码表示Object函数可以将各种值转为对应的构造函数生成的对象。

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

var arr = [];Object(arr) // 返回原数组Object(arr) === arr // truevar obj = {};Object(obj) // 返回原对象Object(obj) === obj // truevar fn = function () {};Object(fn) // 返回原函数Object(fn) === fn // true
登录后复制

利用这一点,可以写一个判断变量是否为对象的函数。

function isObject(value) {  return value === Object(value);}isObject([]) // trueisObject(true) // false
登录后复制扩展知识:其他创建对象的三种方法

1. 对象字面量{…}

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

var obj1 = {};obj1.name = "Tom";var obj2 = { name: "Tom", age: 12 };var name = "Tom", age = 12;var obj3 = { name: name, age: age };// ES2015中,属性名和变量名相同时可简写为:var obj3 = { name, age };// 扩展属性,ES2018新特性,可用于克隆或合并对象,浅拷贝,不包括原型var obj4 = { ...obj3 };
登录后复制

2. Object.create()

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

/** * 创建一个具有指定原型的对象,并且包含指定的属性。 * @param o 新创建对象的原型对象。可能为空 * @param properties 包含一个或多个属性描述符的 JavaScript 对象。 */create(o: object | null, properties?: PropertyDescriptorMap): any;interface PropertyDescriptorMap {    [s: string]: PropertyDescriptor;}interface PropertyDescriptor {    configurable?: boolean;    enumerable?: boolean;    value?: any;    writable?: boolean;    get?(): any;    set?(v: any): void;}
登录后复制
var obj = new Object();      //创建了一个空的对象obj.uname = 'zhangsanfeng';obj.name = 18;       //字面量方式创建对象不同,这里需要用 =  赋值添加属性和方法obj.sex = 'nan';      //属性和方法后面以;结束obj.sayHi = function() {console.log('hi');}console.log(obj.uname);  console.log(obj['age']);0
登录后复制

3. Object.assign()

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

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

var obj = new Object();      //创建了一个空的对象obj.uname = 'zhangsanfeng';obj.name = 18;       //字面量方式创建对象不同,这里需要用 =  赋值添加属性和方法obj.sex = 'nan';      //属性和方法后面以;结束obj.sayHi = function() {console.log('hi');}console.log(obj.uname);  console.log(obj['age']);1
登录后复制如果目标对象或源对象中具有相同的属性,后面的对象的属性将覆盖前面的对象的属性。只会拷贝源对象自身的可枚举属性到目标对象。对源对象原型上的对象不做处理。该方法使用源对象的Get和目标对象的Set来获取和设置值。
var obj = new Object();      //创建了一个空的对象obj.uname = 'zhangsanfeng';obj.name = 18;       //字面量方式创建对象不同,这里需要用 =  赋值添加属性和方法obj.sex = 'nan';      //属性和方法后面以;结束obj.sayHi = function() {console.log('hi');}console.log(obj.uname);  console.log(obj['age']);2
登录后复制

【相关推荐:javascript学习教程

以上就是聊聊JavaScript中怎么利用Object()函数创建对象的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:分享div+css前端命名的规则
下一篇:怎么解决uniapp request数据太长问题

发表评论

关闭广告
关闭广告