写在前面:因为还没开始工作,可能有的部分有错,希望大家能指点出来,这是我看渡一的视频总结的笔记,所有的示例都来自视频,我算是一个搬运工了吧哈哈哈视频讲的很好,强烈推荐大家去看一看ヾ(◍°∇°◍)ノ゙
(基础的变量类型:引用值)
1.字面量法 var obj = {};
2.构造函数法(可创造多个一样的对象) (1)系统自带的构造函数 Object(),Number(),Array() var num = new Number()
(2)自定义 function Person (){} var person = new Person //Person是函数,person是对象,函数命名方式遵守大驼峰方法
(3)对象的增删改查 增改查: 对象.属性 删: delete 对象.属性
注:构造函数的结构和函数没有任何区别
构造函数创建的每个对象,互不干扰,只是初始状态长得一样
注: (1)当一个对象的属性没有时,会打印undefined,不会报错 (2)在内部添加属性 : 在外部添加属性 =
1.在函数体最前面隐式的加上this={} 2.执行this.xxx = xxx; 3.隐式的返回this (有new才执行这三步!!) 有new就不可能返回原始值,会自动忽略掉原始值
1.原始值是不能有属性和方法的 只有对象才有属性方法 对象有(obj,function,array)
2.不是所有数字都是原始值 var num = new Number(123) 数字的对象能参与运算,但是运算之后会回归为数(原始值)?未验证 字符串,布尔类型也同上
3.原始值是不能有属性和方法的,但是有了包装类就可以调用了
4.包装类使用方法: 将用new的方式给原始值添加属性,最后删除添加的结果 自定义的属性:原始值.属性 返回undefined 系统自带属性:原始值.属性 正常返回结果
例1.
var num = new Number(123);可随意添加属性,也可参与运算 undefined和null都不能设置属性
例2.
var num1 = 4; num1.len = 3; //①new Number(num).len = 3;新建一个数字对象,让数字对象的len=3; 把结果扔掉 delete //②new Number(num).len,查看,已经删除了,不存在了 console.log(num1.len);//undefined①②是两个不同的对象
例3.
//数组本身就有截断属性 var str = 'abcd'; str.length = 2; //new String('abcd').length = 2; delete//销毁的是新建的东西,没有销毁str的东西 //str没有length截断属性 console.log(str);//abcd //new String ('abcd').length,这是系统自带的属性,不会销毁 console.log(str.length)//4例4.
var str = 'abc'; str += 1;//str = abc1 var test = typeof (str);//test == 'string' if(test.length == 6){ //new String('abc').sign='typeof的返回值可能为String' 然后delete test.sign = 'typeof的返回值可能为String'; } //new String('abc').sign console.log(test.sign);//undefined原始值赋属性值的话,要调用包装类,相当于赋了跟没赋一样