1.{}
這個叫做物件字面量
var obj = {};
2. new object() 這個叫做new出來的物件
var obj2 = new object();
這兩種建立物件方式,從測試效果來看,{}
會快一點,new關鍵字呼叫了建構函式而{}不會。如果new object()
中沒有傳入引數,與{}
是一樣的。
3.**一下new做了什麼?
//自定義new
function person(name,age)
var person = new person("muzidigbig",23);
console.log(person);//person
new建立過程:
1).首先,建立乙個新的空物件。即:var person = {}
2).再次,新物件的__ptoto__屬性指向了建構函式的原型物件。即:person.__person__ === person.prototype
3).然後,將建構函式中的this指向新物件。即:person.call(person)
4).再然後,執行建構函式內部的**將屬性新增給新例項物件person。
5).最後,返回新例項物件person。
原理:1、2、3)隱式操作呼叫object.create(繼承某個物件的原型,);
使用new關鍵字建立物件的最根本原理是內部呼叫了object.create();方法來實現,並由此實現原型繼承。
new object()將會根據引數value的資料型別,返回對應型別的物件:
1.如果value為基本資料型別string、number、boolean,則返回對應型別的物件。
2.如果value本身為物件,則返回其本身。
3.如果省略了value引數,或value為null、undefined,則返回自身無任何屬性的object物件,即返回乙個空物件<===>{}。
var obj = new object("muzidigbig");
console.log(obj instanceof object);//true
console.log(obj instanceof string);//true
console.log(obj.length);//4
console.log(obj[0]);//m
/*即類似於obj = ;*/
var obj1 = new object();
console.log(obj1.age);//23
總結:
var obj = function() {};
var a = {};
var b = new object();
var c = new obj();
c最快,a次之,b最慢。使用這種方式建立物件,可以很方便的從乙個已經存在的物件建立乙個新物件,而不用使用new關鍵字。
object.create(obj,propertiesobject)方法基於乙個已經存在的物件作為新建立物件的原型。使用object.create()方法建立物件,只需要記住它需要傳入兩個引數。
obj:第乙個引數可以是任意乙個物件,該物件作為新建立物件的原型。
propertiesobject:第二個引數是可選引數,型別是物件,該物件包含向新建立物件新增的屬性。
該引數物件是一組屬性與值,該物件的屬性名稱將是新建立的物件的屬性名稱,值是屬性描述符(這些屬性描述符的結構與object.defineproperties()
的第二個引數一樣)。注意:該引數物件不能是undefined
,另外只有該物件中自身擁有的可列舉的屬性才有效,也就是說該物件的原型鏈上屬性是無效的。
假設有乙個班級物件class:
var classobj =
現在想為這個班級建立乙個學生,可以使用如下方式:
注意:第二個引數的寫法是乙個物件。
總結:使用object.create()是將物件繼承到__proto__屬性上。
假如我們想建立乙個擁有乙個以上物件的所有屬性的新物件,object.assign()方法可以實現這種目的。
object.assign()方法用來將乙個或多個源物件的所有可列舉的屬性拷貝到乙個目標物件中。object.assign()可以接受任意數量的物件作為引數。第乙個引數是他即將建立,並且返回的引數。其餘傳入的物件引數,被用來將屬性複製到新物件中。假設有如下兩個物件:
var orgobj = ;
var carobj = ;
現在需要乙個在baidu公司開著kayan的員工,可以使用如下方式建立物件:
var employee = object.assign({}, carobj, orgobj);
consoloe.log(employee);//
singleton(單例)方法建立物件
**如下:
var person = new function();
使用es6 class建立物件與使用使用者定義的函式構造器建立物件方法類似。構造器函式被類替代,因為它遵循es6規範。
示例如下:
class person
};var person = new person("muzidigbig", "lee");
傲嬌的十六進製制
問題描述 輸入乙個以回車結束的字串 少於80個字元 濾去所有的非十六進製制字元後,組成乙個新字串 十六進製制形式 輸出該字串並將其轉換為十進位制數後輸出。輸入形式 乙個字串,小於80個字串 輸出形式 輸出為兩行 第一行 為整理後的新串 第二行 乙個十進位制數字 樣例輸入 fg 樣例輸出 f incl...
來自C 的 Const式 傲嬌
好久之前就想要做乙個有關const的總結了.作為c 裡實用但複雜的限定符,const可謂是讓人又愛又恨.廢話不多說了,提前做個說明 這是乙個c 語言的const語法簡明介紹.講求快速參考,快速應用.如果想深入詳細地參考應用例項與講解的請自行參考primer第五版.1 const物件必須初始化,且一旦...
傲嬌的python之python檔名
今天在學習pygame的時候,隨手新建了乙個pygame.py的檔案,想來試試pygame這個模組,如下 usr bin env python coding utf 8 date 2017 03 14 19 57 48 author lats jiabin.yang outlook.com link...