JS中的函數很奇怪,既可以作為普通函數,也可以作為構造函數
通過構造函數寫類和普通函數執行
function Person(name){
this.name=name
this.test=function(){
console.log("test");
}
}
let p=new Person("zs")
Person("ls")
console.log(p);
console.log(window);
最明顯的差別是有沒有new和this指向
構造函數this指向建立的對象
普通函數this指向window
new的作用很明顯是建立一個對象,this指向這個對象和繼承方法屬性
既然new的是個對象,那麼一定是從原始對象開始建立
先建立一個Object p
又定義了一個Person類
Person的對象通過原型鍊繼承Person類的屬性和方法
通過call把this指向p
let p =new Object();
let name="zs"
function Person(){
this.name
this.test=function(){
console.log("test");
}
}
p.__proto__=Person.prototype
p.name=name
Person.call(p)
Person.prototype.age=18
console.log(p);