色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 原形

榮姿康1年前6瀏覽0評論

JavaScript原型是JavaScript語言的核心特性之一。它是一種基于對象的編程范式,允許開發者在不使用類的情況下創建對象。在JavaScript中,每個對象都關聯著一個原型對象,這個原型對象包含了對象共享的屬性和方法。

JavaScript的原型可以用來創建基于實例的繼承,這種繼承機制被稱為原型繼承。在原型繼承機制中,對象可以通過原型鏈訪問和繼承父對象的屬性和方法。原型鏈指的是每個對象的原型對象構成的鏈式結構。

function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log("Hello, " + this.name + "!");
}
var person = new Person("John");
person.sayHello(); //輸出:Hello, John!

在這個例子中,我們創建了一個Person類。通過構造函數,我們可以創建Person的實例,并為實例對象添加name屬性。然后,我們將一個函數sayHello添加到Person.prototype原型對象中。所有通過Person類創建的實例都可以繼承這個方法。

可以使用Object.getPrototypeOf(object)方法來動態獲取對象的原型對象。如果需要判斷一個對象的原型是否相同可以使用Object.isPrototypeOf(object)方法。在ES6之后,可以使用Object.setPrototypeOf(object, prototype)方法設置一個對象的原型。

var person = new Person("John");
console.log(Person.prototype === Object.getPrototypeOf(person)); //輸出:true
console.log(Person.prototype.isPrototypeOf(person)); //輸出:true
var obj = {};
Object.setPrototypeOf(obj, Person.prototype);
console.log(obj instanceof Person); //輸出:false
console.log(Person.prototype.isPrototypeOf(obj)); //輸出:true
console.log(obj.name); //輸出:undefined

在這個例子中,我們使用Person類創建了一個person對象。我們使用Person.prototype和Object.getPrototypeOf(person)驗證對象的原型是否正確。

我們創建了另一個空對象,并使用Object.setPrototypeOf設置其原型為Person.prototype。我們可以使用Person.prototype.isPrototypeOf(obj)驗證設置是否成功。雖然我們設置了obj的原型為Person.prototype,但obj并不是Person的實例。因此我們訪問obj的name屬性將返回undefined。

通過JavaScript原型,可以創建靈活且可擴展的對象。原型鏈讓JavaScript中的繼承變得簡單。原型也是實現面向對象編程的核心。