欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript中原型鏈

張春美1年前8瀏覽0評論
原型鏈是JavaScript中的一個重要概念,它是指每個對象都有一個原型對象,如果它需要的屬性或方法沒有在自己的對象中找到,就會沿著自己的原型鏈向上查找,直到找到對應的屬性或方法為止。在JavaScript中,每個對象都是通過原型鏈來實現繼承的。
我們先來看一個簡單的例子:


let person = {
name: 'John',
age: 30,
sayHello: function() {
console.log('Hello ' + this.name);
}
};
let student = Object.create(person);
student.name = 'Mike';

在這個例子中,我們先定義了一個person對象,它有兩個屬性name和age,還有一個sayHello方法。接著我們通過Object.create方法創建了一個student對象,并將person對象作為它的原型對象。最后,我們為student對象設置了一個name屬性。
這時候,如果我們調用student的sayHello方法,它會找不到name屬性,因為它是在person對象上定義的。此時,JavaScript就會沿著原型鏈向上查找,直到找到person對象的name屬性為止,再進行輸出。
在這個例子中,person對象就是student對象的原型對象。如果person對象還有原型對象,那么它成為student對象的祖先原型對象。對于任何多層嵌套的對象或者函數,都有一個相應的原型鏈。
我們再來看一個擴展原型鏈的例子:


function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayHello = function() {
console.log('Hello ' + this.name);
}
function Student(name, age, id) {
Person.call(this, name, age);
this.id = id;
}
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
Student.prototype.sayHi = function() {
console.log('Hi, my id is ' + this.id);
}
let student = new Student('Mike', 20, '001');

在這個例子中,我們定義了一個Person構造函數來創建一個person對象,并定義了一個sayHello方法。接著,我們定義了一個Student構造函數來創建一個student對象,它繼承了Person構造函數的屬性和方法,再定義了一個sayHi方法。最后,我們創建了一個student對象,名字為‘Mike’,年齡為20,學號為‘001’。
在這個例子中,我們用了一些新的東西。Student構造函數用了一個call方法來繼承Person構造函數,這個方法用來調用一個對象的一個方法,以另一個對象替換當前對象。這里的this指代的是Student構造函數創建的對象,也就是student對象。
我們還用了Object.create方法創建了一個新的對象,它的原型對象是Person.prototype。這樣做的目的是為了把Person對象的原型鏈賦值給Student對象,讓Student對象能夠從Person對象繼承屬性和方法。
最后,我們給Student對象添加了一個sayHi方法,讓它擁有自己的方法。這個方法和Person對象的sayHello方法是不同的,這也展示了JavaScript中通過原型鏈實現繼承的特點。
綜上所述,原型鏈是JavaScript中很有用的一個概念,它可以讓我們輕松創建出函數和對象的繼承關系,還可以解決JavaScript中一些復雜的問題。掌握了原型鏈的概念,我們就可以更好地理解JavaScript中很多特性和功能。