构造函数
工厂方法创建一个DOG的函数示例
function dog(name,age){ var obj = { name:name, age:age, saysth:function() { alert(this.name + "喊汪汪") } } return obj } var obj1 = dog("虚线",333) console.log(obj1) obj1.saysth()
上述的工厂方法创建的对象使用的构造函数都是Object
缺点就是导致无法区分多种类型的对象,所以需要用到构造函数
function person(){ this.name = "孙悟空"//2.将新建的对象设置为函数中的this this.age = 18 this.sayname = function(){ alert(this.name)//逐行执行函数代码 } } var per = new person() ; /* 1.var per = person()是调用函数,而加个NEW则是创建对象 */ per.sayname() //4.将新建函数作为返回值返回
加入形参后
function person(name,age){ this.name = name//2.将新建的对象设置为函数中的this this.age = age this.sayname = function(){ alert(this.name)//逐行执行函数代码 } } var per = new person("孙悟空",18) ; var per1 = new person("猪八戒",22) /* 1.var per = person()是调用函数,而加个NEW则是创建对象 */ per.sayname() //4.将新建函数作为返回值返回 console.log(per1)
使用同一个构造函数创建的对象为同类对象,同理也可以创建一个var dog = new dog()
使用instanceof可以检查一个对象是否是一个类的实例,类就是构造函数,
语法: 对象 instanceof 构造函数,如果是则为True,否为false
console.log(per instanceof person)