版权声明:Element https://blog.csdn.net/goucheng112/article/details/82562540
前言:
1,实例对象是通过构造函数创建的,创建的过程叫做实例化。
2,如何判断对象是不是这个数据类型?
可以通过 constructor来看他的构造器是什么。
也可以使用instanceof来判断,推荐使用此方法
创建对象的基本方法
第一种方法,创建一个Object的实例,在给他添加属性和方法。
<script>
var person = new Object;
person.name = "wahaha";
person.age = 30;
person.sayHi = function(){
console.log("nihao");
}
</script>
第二种方法,字面量创建对象,和前面在本质上并没有什么区别,但显得更加直观。
<script>
var person = {
name:"wahaha",
age:30,
sayHi:function(){
alert("haha")
}
}
</script>
工厂模式创建对象
<script>
function createPerson(name,age){
var p = new Object;
p.name = name;
p.age = age;
p.sayHi = function(){
console.log("nihao");
}
return p;
}
var per1 = createPerson("wahaha",30);
var per2 = createPerson("kangshifu",40)
</script>
工厂模式创建对象,你会发现和第一种基本创建方法差不多,但工厂模式利用函数可以传参数的特性,对第一种基本创建方法加以改良,使得工厂模式可以通过传递参数创造出很多具有不同属性的对象。
这个创造函数就像工厂里的流水线一样,死板得很。会重复创造一些其他对象不需要的东西。
构造函数创建对象
<script>
function Person(name,age){
this.name = name;
this.age = age;
this.sayHi = function(){
console.log(this);
}
}
var per1 = new Person("huang",23);
var per2 = new Person("li",22);
</script>
和工厂模式的区别在在哪里呢?
视觉上的:这里有this,这里面没有用到Object,没有返回函数。
内在的区别:构造函数方法创建了一个新的Person类型,下面的新建的per1和per2都是在这个类型下面。
但不论是构造函数创建的对象还是基本方法创建的对象都是属于Object类型。