使用TypeScript開發已經一段時間了,也把JavaScript遺忘在一邊了。今天回過頭來學習學習基礎,才發現本身是多麼的辣雞。javascript
好高騖遠,老是看而少動手敲和記錄下來。如此的學習方式,難以深刻發展。之後要多碼字才行,記錄在本身的有道雲筆記裏,亦或發表在這個平臺上。java
咱們能夠使用構造函數能夠建立咱們須要的對象,下面記錄幾種方式,最主要的區別就在於方法的定義方式。函數
function Person1() {
this.name = `阿布`;
this.age = 11;
this.printInfo = function () {
console.log(`this.name: ${this.name}, this.age: ${this.age}`);
}
}
var per1 = new Person1();
var per2 = new Person1();
console.log(per1.printInfo === per2.printInfo); // false
複製代碼
方法直接定義到構造函數裏,這樣每聲明一個新對象,方法都是一樣的,但其地址確實不同的,浪費空間地址。學習
function Person2() {
this.name = `阿紫`;
this.age = 18;
this.printInfo = printInfo;
}
function printInfo () {
console.log(`this.name: ${this.name}, this.age: ${this.age}`);
}
複製代碼
定義了全局函數,污染了全局的命名空間。ui
function Person3() {
this.name = `hello pretty`;
this.age = 18;
}
Person3.prototype.printInfo = function (){
console.log(`this.name: ${this.name}, this.age: ${this.age}`);
}
複製代碼
這種方式是比較好的。把方法定義到原型鏈上,每個新建的對象都能共用此方法。通常狀況下,咱們會把共享的方法或屬性定義到原型鏈上。this