对象,包装类
程序员文章站
2024-02-29 23:26:58
...
对象(基础变量类型Object)
var Object={
name : "baoxiaohai",
level: 0,
sex : "male", //属性
study: function(){
this.level++; //若要在方法内部指定属性的运算,可以用 **this.属性**指代
} //方法
}
- 属性值的增删改查
增 : 对象.属性=“ ”;直接操作。
查 : 对象.属性( (document.write();)不可以用于整个对象。)
改 : 直接给属性重新赋值
删 : delete 对象.属性
在一个对象的属性未被定义之前返回值为undefined
对象的创建方法
var obj = { } plainObject 对象字面量/对象直接量
-
构造函数
①系统自带的构造函数Object( ); Array( ); object=new Object( );
②自定义(约定俗成的大驼峰式命名规则,每一个单词的首字母都大写)function ObjectName{ }; var a = new ObjecrName( ); var b = new ObjectName( );
a与b相互独立
构造函数的内部原理
调用new操作符隐式构造
function Student(name,age,sex){
//调用New操作符在此处隐式创建了this{
name:"" age: " " sex:" "
}
this.name = name ;
this.age = age;
this.sex = sex;
this.gread = 2017;
//在此处隐式返回this;
//如果在此处加上return干扰返回值,如果返回原始值系统自动忽略,如果是对象可以干扰到返回值
}
var Student1 = new Student('baiyuting', 3, 'femeal');
var Student2 = new Student('baoxiaohai', 4, 'male');
包装类
数字对象:(可以像数字一样被操作)var num = new Number("123"); num*2=246 ==>数字
。
原始值没有属性
var num = 4;
num .len = 3;
//系统隐式创建数字对象new Number(4).len = 3;
//执行完赋值 ==> delete
//创建一个新的数字对象new Number(4).len输出,此时num.len无实际值
console.log(num.len);//undefined
既然原始值没有属性,那字符串的长度是怎么输出的呢???
过程大致如下,字符串的原型String上有length属性。
var str = "abcd";
console.log(str.length)
//console.log(new String("abcd").length);
str.length = 2;
//new String('abcd').length = 2; ==> delete
console.log(str);//abcd
那么字符串是否可以增加别的属性呢???
var str = "abc";
str += 1;
var test = typeof(str);
if(test.length==6){
test.sign = "typeof的返回结果可能为string";
// text=new String().sign="typeof的返回结果可能为string"; delet
}
console.log(test.sign);//undefined
由此可见原始值并没有属性,也不能通过后期增加。