对象
区别(特点):与C++,Java,C#不同,JavaScript生成的对象可以对其进行动态的添加,修改,删除对应的属性,比较灵活
构造函数
- 原理(与函数方法的不同)
- 在函数体(构造函数)最前面隐式添加 this
function Animal(){
var this = {
__proto__ : Animal.prototype
};//隐式添加
}
- 执行赋值语句 this.key =value;
- key:对象的属性(要添加的,要赋值的)关键词
- value:对应的值或内容
- 隐式返回this 即 return this;
构造函数与函数的关系与区分
- 开发时,声明构造函数使用大驼峰原则命名,声明函数时使用小驼峰命名原则
- 使用函数来模拟构造函数
function TestObject(name,age){
var that= {};
that.name = name;
that.age = age;
return that;
}
var test = TestObject('15','52');//注意此时没有使用关键词new,使用new时会返回原始值,若指定返回其他内容则会强制修改为this
New解释
var testNum = new Number();//此时会生成对象,并不是Number,但是参与运算后可以转化为Number
testNum.a = "abc";//此时可以添加属性值,与对象相似
包装类
var testNum = 4;
testNum.a = "abc";//此时可以添加属性值,但是不会报错,输出为undefined
//隐式环节:包装类
//1. testNum = new Number(4);
//2. testNum.a ="abc";
//3. delete testNum ;
var str= "abcd";
str.length = 2;
console.log(str);//输出为abcd
console.log(str.length);//输出为4
//隐式环节:包装类
//1. new String("abcd").length = 2
//2. delete new String("abcd")
- 练习
var str= "abc";
str += 1;
if(str.length == 6){
str.sign = "Hello World";
}
console.log(str.sign);//结果为undefined