JS 对象、包装类

对象的创建方法

1.通过对象字面量直接创建

var obj = {}  plainObject  // 对象字面量|对象直接量

2…通过构造函数来创建对象
(1)用系统自带的构造函数 Object()

var obj = new Object();

(2)自定义构造函数来创建对象
为了和函数相区分,一般将对象名的单词首字母大写

function Person() {};
		var person1 = new Person();
构造函数内部原理

(1)在函数体最前面隐式的加上this = {}
(2)执行构造函数体内的语句
(3)隐式的返回this

//举例
function Student(name, age, sex){//定义一个构造函数
	this.name = name;
	this.age = age;
	this.sex = sex;
	this.grade = 2020;
}
var student = new Student('xiaoMing', 18, 'male');//新建一个student对象

那么为什么通过new可以新建一个Student对象,当用new时,会在构造函数体内的前面和后面隐式的加上一些语句,使得新对象创建成功.

//接上部分代码,当用new Student()后,function Student(){}变为
function Student(name, age, sex){
	//var this = {};隐式定义一个空对象
	this.name = name;
	this.age = age;
	this.sex = sex;
	this.grade = 2020;//执行语句
	//return this;返回this这个对象
}

那么如果我想显式的return一个值

function Student(name, age, sex){
	//var this = {};隐式定义一个空对象
	this.name = name;
	this.age = age;
	this.sex = sex;
	this.grade = 2020;//执行语句
	return {};
}
var st1 = new Student('xiaoming', '20', 'male');
> st1
< {} //返回一个空对象,说明我们显示的return空对象成功了

那么如果return一个原型值123

function Student(name, age, sex){
	//var this = {};隐式定义一个空对象
	this.name = name;
	this.age = age;
	this.sex = sex;
	this.grade = 2020;//执行语句
	return 123;
}
var st1 = new Student('xiaoming', '20', 'male');
> st1
< Student {name: "xiaoming", age: "20", sex: "male", grade: 2020}
//任然返回this对象,因为如果return一个原型值的话,程序就会自动忽略,所以任然
//隐式的返回空对象
包装类

1.Number(),String(),Boolean()方法
原始值:number,string,boolean,undefined,null

> var num = new Number(22);//创建一个数字对象,当然string和boolean同理
> num.abc = 'aa'; //给这个数字对象添加属性
> num.abc
< 'aa'

2.包装类
原始值不能有属性和方法,那为什么字符串可以引用length属性,且添加属性和方法不报错?

> var str = 'cici';
> str.length
< 4  				//返回长度为4
> str.abc = 'aab';  //添加一个属性abc
> str.abc			//查看这个属性
< undefined			//打印未定义

因为当原始值引用属性和方法时,会将原始值隐式的包装成类,然后在销毁

//例如
var num = 20;
num.len = 3;
//相当于隐式的声明
//new Number(num).len = 3;
//delete;//再销毁
//那么再去访问num.len
> num.len
< undefined //因为所包装成的类已被销毁,所以为undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值