物件 原型與原型鏈

2021-09-13 01:11:10 字數 2558 閱讀 4206

object.defineproperty

let obj = 

object.defineproperty(obj, "key1", )

console.log(object.getownpropertydescriptor(obj, "key0")); //

console.log(object.getownpropertydescriptor(obj, "key1")); //

判斷物件是否有指定屬性或方法而不是繼承的

obj.hasownproperty("tostring")

獲取物件屬性的陣列

object.getownpropertynames(obj)

object.keys(obj) // 獲取不到不可列舉(enumerable: false)的屬性

object.assign

assign() 用於將所有可列舉屬性的值從乙個或多個源物件複製到目標物件。同 $.extend();

object.assign({}, obj); // 

$.extend({}, obj); //

物件和json的轉化
let xmobj = 

// 序列化成json

var res = json.stringify(xmobj, null, ' '); // typeof res == "string"

// 解析成物件

var reso = json.parse(res); // typeof reso == "object"

先看一段**
function person(name, age)

person.prototype.work=function(){}

function programmer(name,age)

programmer.prototype = new person();

programmer.prototype.code=function(){}; // 如果寫成物件會覆蓋繼承來的屬性和方法,即賦值為。

let example = new programmer('碼農',24); // 建立例項,example是例項,programmer是原型。

object.prototype.sth = function(){}

new的過程:建立乙個空物件,讓this指向它,通過this.name,this.age等賦值,最終返回this。

原型和例項

在上面**中,programmer是原型,example是它的例項。用instanceof檢測,有

example instanceof programmer === true

example instanceof person === true

example instanceof object === true

通過example.constructor屬性返回對建立此物件的陣列函式的引用。

example.constructor===person

example.constructor===person.prototype.constructor

但是constructor 屬性易變,不可信賴,它可以通過修改prototype而手動修改。

例項的__proto__對應原型的prototype

example.__proto__===programmer.prototype

example.__proto__.__proto__===person.prototypeprogrammer.prototype.__proto__

example.__proto__.__proto__.__proto__===object.prototype

所有物件都是object的例項,並繼承object.prototype的屬性和方法。

原型鏈找乙個屬性,首先在example.__proto__去找,如果沒有,再去example.__proto__.__proto__找,……,再到object.prototype,一直到null,即object.prototype.__proto__ === null。這個串起來的鏈就是原型鏈。

比如:example.codeexample.workexample.dosthexample.tostring都有,而example.foo就為undefined

javaScript 原型物件與原型鏈

proto 一般理解為類似構造器原型 函式物件 var o function o.constructor 構造器 由constructor函式產生的 o.constructor.prototype 構造器原型 一般字面量物件 var oo oo.constructor 構造器 由constructo...

原型與原型鏈

原型有兩種 1為顯示原型,2為隱式原型 1.顯示原型 a prototype b 每個函式都有乙個顯示原型prototype當然函式也有隱式原型 c 原型就是函式的乙個屬性,這個屬性名叫做prototype d 這個屬性即prototype的型別是object 2.隱式原型 a proto b 每個...

原型與原型鏈

圖中一共標了7條線,就一條一條的講,講完了就應該懂了 已知 1.函式是物件,原型也是物件 2.proto 每乙個物件都有,prototype是函式特有的 3.物件的 proto 屬性指向該物件建構函式的 原型 prototype 線1.物件f1的 proto 屬性指向其建構函式的原型 其建構函式 f...