一、对象 1、创建一个对象,对象有一些属性和方法。
var obj = { name : 'object', age : 20, gender : 'bisexual', difficult : function(){ console.log('你能把我咋地!'); this.age--; }, length: function(){ console.log('大丈夫能屈能伸'); this.age++; } }增:obj.father = 'Javascript'; 删:delete obj.name; 改:obj.gender = 'female'; 查:console.log(obj.age); 当访问一个对象没有的属性,返回undefined。 2、对象的创建方法: 1、plainObject,对象字面量/对象直接量,参照上面代码。 2、构造函数(大驼峰式命名) 1.系统自带:var obj = new Object(); 2.自定义方法,看下图代码。
function CarManufacture(color,seat){ this.color = color; this.seat = seat; this.name = 'BMW'; this.height = '1400'; this.weight = 1000; this.health = 100; this.run = function(){ this.health--; } } var car1 = new CarManufacture('red','leather'); var car2 = new CarManufacture('yellow','wood');一个工厂生产出两台一模一样的车,car1和car2,他们可以随意调用自己的属性和方法,互不相干。 3、构造函数内部原理: 1.在函数体最前面隐式var this = {}; 2.执行this.xxx = xxx; 3.最后隐式return this;
function Person(name,height){ //var this = {} this.name = name; this.height = height; this.say = function(){ console.log(this.say); } //return this; return {};//return引用值可以捣乱,但return原始值影响不了。 } var person1 = new Person('Jack',180); var person2 = new Person('Tom',160);二、包装类: 属性和方法专属对象,原始值是坚决没有属性和方法的!!! 数字,字符串,布尔都可以new。但undefined和null没有这种操作,这也是他俩不能调用toString的原因吧 var num = new Number(123); var str = new String('abcd'); var bol = new Boolean('true');
var str = 'abc'; str += 1; var test = typeof(str);//test == 'string' //隐式new String(test).length == 6 delete if(test.length == 6){ test.sign = 'typeof的返回结果可能为String'; //隐式new String(test).sign = 'typeof的返回结果可能为String' delete!!! } //隐式new String(test).sign = undefined console.log(test.sign);//undefined以上内容属二哥原创,整理自 "渡一教育Javascript课程" ,一个值得推荐的"渡一教育"。