久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

聊聊JavaScript中怎么利用Object()函數(shù)創(chuàng)建對象

怎么利用Object()函數(shù)創(chuàng)建對象?下面本篇文章給大家介紹一下Object()構造函數(shù)創(chuàng)建對象的方法(附其他三種創(chuàng)建對象的方法),希望對大家有所幫助!

聊聊JavaScript中怎么利用Object()函數(shù)創(chuàng)建對象

new Object()創(chuàng)建對象


JavaScript 原生提供Object對象(注意起首的O是大寫),所有其他對象都繼承自這個對象。Object本身也是一個構造函數(shù),可以直接通過它來生成新對象。

Object()函數(shù)可以將給定的值包裝為一個新對象。

語法:

new Object() new Object(value)

參數(shù) value 是任意類型的可選參數(shù)。

  • 如果value值是nullundefined或不傳時,則會創(chuàng)建并返回一個空對象;

  • 如果value值是一個基本類型,則會構造其包裝類的對象,返回一個和給定的值相對應的類型的對象。;

  • 如果value值是引用類型,則仍然返回這個值。

    如果給定值是一個已經(jīng)存在的對象,則會返回這個已經(jīng)存在的值(相同地址)。

var obj = new Object();      //創(chuàng)建了一個空的對象 obj.uname = 'zhangsanfeng'; obj.name = 18;       //字面量方式創(chuàng)建對象不同,這里需要用 =  賦值添加屬性和方法 obj.sex = 'nan';      //屬性和方法后面以;結(jié)束 obj.sayHi = function() { console.log('hi'); } console.log(obj.uname);   console.log(obj['age']);

聊聊JavaScript中怎么利用Object()函數(shù)創(chuàng)建對象

說明:通過new Object()的寫法生成新對象,與字面量的寫法o = {}是等價的。

var o1 = {a: 1}; var o2 = new Object(o1); o1 === o2 // true  new Object(123) instanceof Number // true

與其他構造函數(shù)一樣,如果要在Object對象上面部署一個方法,有兩種做法。

(1)部署在Object對象本身

比如,在Object對象上面定義一個print方法,顯示其他對象的內(nèi)容。

Object.print = function(o){ console.log(o) }; var o = new Object(); Object.print(o) // Object

(2)部署在Object.prototype對象

所有構造函數(shù)都有一個prototype屬性,指向一個原型對象。凡是定義在Object.prototype對象上面的屬性和方法,將被所有實例對象共享。(關于prototype屬性的詳細解釋,參見《面向?qū)ο缶幊獭芬徽隆#?/p>

Object.prototype.print = function(){ console.log(this)}; var o = new Object(); o.print() // Object

上面代碼在Object.prototype定義了一個print方法,然后生成一個Object的實例o。o直接繼承了Object.prototype的屬性和方法,可以在自身調(diào)用它們,也就是說,o對象的print方法實質(zhì)上是調(diào)用Object.prototype.print方法。。

可以看到,盡管上面兩種寫法的print方法功能相同,但是用法是不一樣的,因此必須區(qū)分“構造函數(shù)的方法”和“實例對象的方法”。

Object()

Object本身就是一個函數(shù),本身當作工具方法使用時,可以將任意值轉(zhuǎn)為對象。這個方法常用于保證某個值一定是對象。

  • 如果參數(shù)是原始類型的值,Object方法返回對應的包裝對象的實例

Object() // 返回一個空對象 Object() instanceof Object // true  Object(undefined) // 返回一個空對象 Object(undefined) instanceof Object // true  Object(null) // 返回一個空對象 Object(null) instanceof Object // true  Object(1) // 等同于 new Number(1) Object(1) instanceof Object // true Object(1) instanceof Number // true  Object('foo') // 等同于 new String('foo') Object('foo') instanceof Object // true Object('foo') instanceof String // true  Object(true) // 等同于 new Boolean(true) Object(true) instanceof Object // true Object(true) instanceof Boolean // true

上面代碼表示Object函數(shù)可以將各種值轉(zhuǎn)為對應的構造函數(shù)生成的對象。

  • 如果Object方法的參數(shù)是一個對象,它總是返回原對象。

var arr = []; Object(arr) // 返回原數(shù)組 Object(arr) === arr // true  var obj = {}; Object(obj) // 返回原對象 Object(obj) === obj // true  var fn = function () {}; Object(fn) // 返回原函數(shù) Object(fn) === fn // true

利用這一點,可以寫一個判斷變量是否為對象的函數(shù)。

function isObject(value) {   return value === Object(value); }  isObject([]) // true isObject(true) // false

擴展知識:其他創(chuàng)建對象的三種方法

1. 對象字面量{…}

對象字面量的方式是最常用的方式之一,它用內(nèi)含屬性的花括號{...}快速創(chuàng)建對象。

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()方法創(chuàng)建一個新對象,使用現(xiàn)有的對象來提供新創(chuàng)建的對象的__proto__

/**  * 創(chuàng)建一個具有指定原型的對象,并且包含指定的屬性。  * @param o 新創(chuàng)建對象的原型對象??赡転榭? * @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 obj1 = Object.create(null); Object.getPrototypeOf(obj1) === null;	// true  var proto= {}; var obj2 = Object.create(proto); Object.getPrototypeOf(obj2) === proto;	// true  var obj3 = Object.create({}, { p: { value: 42 } }); // 屬性描述對象中省略了的屬性默認為false,所以p是不可寫,不可枚舉,不可配置的 Object.getOwnPropertyDescriptors(obj3);	// p: {value: 42, writable: false, enumerable: false, configurable: false}  //創(chuàng)建一個可寫的,可枚舉的,可配置的屬性p var obj4 = Object.create({}, { 	p: { value: 42, writable: true, enumerable: true, configurable: true } });  //不能同時指定訪問器(get和set)和 值或可寫屬性 var obj4 = Object.create({}, { 	p: {     	// value: 42,		// 不能和get set同時存在     	// writable: true,	// 不能和get set同時存在     	enumerable: true,     	configurable: true,     	get: function() { return 10 },     	set: function(value) { console.log("Setting `p` to", value); }   } });

3. Object.assign()

Object.assign()方法并不是直接用來創(chuàng)建對象的,但它可以達到創(chuàng)建對象的效果,所以這里把它也作為一種創(chuàng)建對象的方式。

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"是原型上的屬性 	a: { value: 42 }, 			// 不可枚舉 	b: { value: 42, writable: false, enumerable: true, configurable: false },    	c: { enumerable: true, get: function() { return 10; } }  }); var obj1 = Object.assign(o1, o2); obj1 === o1;		// true obj1;				// {name: "Tom", b: 42, c: 10} Object.getOwnPropertyDescriptors(obj1);	// 不會拷貝屬性的 /* 	b: {value: 42, writable: true, enumerable: true, configurable: true} 	c: {value: 10, writable: true, enumerable: true, configurable: true} 	name: {value: "Tom", writable: true, enumerable: true, configurable: true} */  var o4 = { a: "a", b: { name: "Tom", age: 18 } }; var obj2 = Object.assign({}, o4); obj2.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}  // 基本類型會被轉(zhuǎn)為包裝對象,只有字符串的包裝對象有自身可枚舉屬性。 var obj4 = Object.assign({}, "abc", null, true, undefined, 10, Symbol("foo")); obj4;		// {0: "a", 1: "b", 2: "c"}  // 拷貝過程中發(fā)生異常,會終止后續(xù)拷貝任務,已拷貝的數(shù)據(jù)保留 var t = Object.create( {}, { b: { value: 42, writable: false } }); 	// b是只讀屬性 Object.assign(t, {a: 1}, {a: 2, b: 2, c: 3}, {c: 4});	// Cannot assign to read only property 'b' of object '#<Object>' t;		// {a: 2, b: 42}

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
美国三级日本三级久久99 | 红桃视频国产精品| 日韩av首页| 激情国产在线| 欧美a一区二区| 久热精品在线| 日韩和欧美一区二区三区| 国产精品第一| 麻豆一区二区三| 国产欧美亚洲一区| 午夜精品免费| 丝袜美腿亚洲色图| 精品视频在线观看网站| 日韩不卡在线观看日韩不卡视频| 日韩亚洲精品在线观看| 国产亚洲电影| 国产一区不卡| 欧美亚洲在线日韩| 狠狠色狠狠色综合日日tαg| 国产精品日韩久久久| 免费日韩av片| 日韩高清电影一区| 国产精品videossex久久发布| 精品五月天堂| 久久免费高清| 伊人久久成人| 日本综合视频| 国精品产品一区| 91精品国产调教在线观看| 国产精品毛片在线| 最新日韩欧美| 婷婷综合六月| 激情欧美丁香| 日韩高清欧美激情| 91成人超碰| 国产一区调教| 911亚洲精品| 99国产精品| 欧美黄色精品| 四季av一区二区凹凸精品| 麻豆精品新av中文字幕| www.51av欧美视频| 亚洲欧洲午夜| 欧美日韩午夜| 国产精品资源| 亚洲丝袜美腿一区| 亚洲69av| 欧美福利专区| 欧美亚洲国产一区| 亚洲精品精选| 久草精品视频| 日韩精品高清不卡| 国产一区国产二区国产三区| 日本精品不卡| 中文日韩在线| 久久国产欧美日韩精品| 国产成人1区| 日本欧洲一区二区| 国产伊人久久| 中文字幕成人| 国产一区二区三区四区大秀| 精品精品久久| 亚洲一二三区视频| 日韩一区免费| 国产aa精品| 日韩网站在线| 国产毛片精品| 欧美美女一区| 国产精品三p一区二区| 一区二区小说| 欧美日韩一区自拍| 久久影院一区| 欧美国产先锋| 国产亚洲激情| 国产精品久久久久久久久妇女| 蜜臀91精品一区二区三区| 欧美黑人巨大videos精品| 麻豆精品91| 欧美一区久久久| 欧美日韩1区2区3区| 亚洲精品中文字幕乱码| 麻豆一区二区在线| 在线视频亚洲欧美中文| 日韩精品专区| 日韩欧美视频专区| 国产高清一区二区| www成人在线视频| 蜜臀91精品一区二区三区| 日本一区二区高清不卡| 日韩一区二区三区四区五区| 亚洲h色精品| 久久精品国产99国产精品| 日韩精品一区二区三区av| 国产一区二区高清| 国产精品二区不卡| 欧美色综合网| 久久av一区| 国产99久久| 日韩一区电影| 国产专区精品| 国产视频一区二| 美女久久网站| 在线日韩一区| 欧美香蕉视频| 日韩不卡一区| 久久97视频| 麻豆精品99| 国产乱码精品| 国产精品一区毛片| 91亚洲精品在看在线观看高清| 丝瓜av网站精品一区二区| 午夜精品一区二区三区国产| 日韩理论视频| 日韩av免费大片| 精品国产精品国产偷麻豆| 日本a级不卡| 亚洲乱码久久| 亚洲精品美女91| 婷婷综合国产| 视频在线在亚洲| 水蜜桃久久夜色精品一区的特点| 欧美在线亚洲| 日韩视频在线一区二区三区| 宅男噜噜噜66国产日韩在线观看| 99国产精品私拍| 亚洲欧洲另类| 中文不卡在线| 日韩av在线播放中文字幕| 欧美日本不卡| 国产精品密蕾丝视频下载| 国产精品99久久久久久董美香| 亚洲1区在线| 国产免费av国片精品草莓男男| 欧美一级二级三级视频| 国产色噜噜噜91在线精品| 国产美女撒尿一区二区| 欧美激情aⅴ一区二区三区 | 日韩有码av| 日韩精品午夜视频| 国产欧美三级| 国产一区二区亚洲| 久久久91麻豆精品国产一区| 精品国产aⅴ| 久草免费在线视频| 欧美 日韩 国产一区二区在线视频 | 欧美丰满日韩| 99精品在线免费在线观看| 在线亚洲激情| 日韩精品视频网站| 国产欧美日韩在线一区二区| 欧美1区二区| 欧美久久天堂| 亚洲欧洲午夜| 亚洲精品激情| 久久不见久久见国语| 日韩在线欧美| 免费精品视频最新在线| 91午夜精品| 老牛影视精品| 国产精品普通话对白| 欧美日韩一视频区二区| 欧美国产美女| 老司机久久99久久精品播放免费| 欧美另类中文字幕| 国产白浆在线免费观看| 亚洲精品网址| 日韩激情av在线| 精品一区二区男人吃奶| 色婷婷精品视频| 亚洲精品系列| 国产成人精品一区二区三区视频| 久久视频精品| 奇米777国产一区国产二区| 成人午夜亚洲| 性色一区二区| 久久99偷拍| 精品中文一区| 国产欧美日韩一区二区三区在线| 伊人久久高清| 日韩欧乱色一区二区三区在线| 国产一区2区| 快she精品国产999| 精品一区二区男人吃奶| 久久人人99| 国产无遮挡裸体免费久久| 久久久人人人| 欧美日韩精品一区二区三区视频 | 五月婷婷亚洲| 国产精品任我爽爆在线播放 | 日韩一区二区三区精品视频第3页| 久久久久久亚洲精品美女| 狠狠久久婷婷| 麻豆传媒一区二区三区| 欧美亚洲精品在线| 久久99久久久精品欧美| 美女精品在线| 日韩欧美三级| 久久国产精品免费一区二区三区 | 国产精品v亚洲精品v日韩精品| 宅男在线一区|