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);