创建对象的三种方式:
1.直接使用变量创建(语法糖:比较快捷的方式)
<script>
var obj={
name:"jack",
age:19,
sex:"boy"
}
</script>
2.通过new来创建(标准的写法)
<script>
var obj2=new Object({
name:"herry",
age:20,
sex:"boy"
})
</script>
3.通过构造函数来创建对象(比较便捷的方式,当属性名一样,但值不同可以快速创建多个对象):任何函数都可以通过new来创建对象
</script>
function fn(){}
var ft=new fn()//创建一个空对像ft
ft.age=24//给对象ft中添加一个属性age和值
console.log(ft)//打印出来的是对象
</script>
分析this指向步骤:1.创建一个空对象
2.运行函数
3.函数内部的this是创建的对象(下列的this分别指向b对象和c对象
b和c是两个不同的对象,是两个不同的数据容器,只是属性名一样,但值不同
<script>
function pig(name,age,sex){
console.log()
this.name=name
this.age=age
this.sex=sex
}
var b=new pig("jack",19,"boy")
console.log(b)
var c=new pig("herry",20,"boy")
console.log(c)
</script>
new构造函数生成结果程序分析步骤
1.创建一个对象
2.运行函数
3.函数内部的this就是创建的那个对象
4.整个表达式生成的结果有两种(1)函数若返回一个引用数据(数组、对象、函数),那么生成结果就是引用数据
(2)若返回的不是引用数据,则返回的就是刚刚创建的对象
4.1例子:由下面程序可知,返回的是一个引用数据中的对象,所以此时的new对象失效,返回的就是对象
<script>
function a(){
this.i=1
this.b="true"
this.c='123'
return {name:"jack",age:11,sex:"boy"}
}
var d=new a()
console.log(d)
</script>
4.2例子:由下面程序可以看到返回的类型不是引用数据中的任何一种,所以new对象生效,返回的是对象
<script>
function a(){
this.i=1
this.b="true"
this.c='123'
return 300
}
var d=new a()
console.log(d)
</script>