对象
1. 对象的创建
-
对象字面量/对象直接量: var obj = {}
var mrDeng = { name : 'MrDeng', age : '40', sex : 'male', wife : 'xiaoWang', health : 100, //函数1 smoke : function(){ console.log('I am smoking!'); this.health --; // 运行这个函数,可以改变其他属性 }, //函数2 drink(){ console.log('I am dring'); this.health ++; // 运行这个函数,可以改变其他属性 } }
-
系统自带的构造函数 : Object()
var obj = new Object(); obj.name = 'yaoyaole'; obj.age = 40;
-
自定义
// 构造函数(生产车间)必须是大驼峰式命名 function Car(color){ //相当于有var this = new Object(); this.color = color;//可以往里面传参数,给属性赋值 this.name = 'BMW'; this.height = '1400'; this.lang = '4900'; this.weight = 1000; this.health = 100; this.run = function(){ this.health --; } //相当于有return this;(赋值的时候有new才生效) } var car1 = new Car(); //从车间出来后,互不影响 var car2 = new Car(); //从车间出来后,互不影响 car1.name = 'Maserati'; car2.name = 'Merz'
2. 对象的属性
第一种:
- 增/改:
mrDeng.wife = 'xiaoLiu'
- 删:
delete mrDeng.name;
- 查:
console.log(mrDeng.wife);
console.log(mrDeng);
第二种: - 增/改:
mrDeng['wife'] = 'xiaoLiu'
- 删:
delete mrDeng['name'];
- 查:
console.log(mrDeng['wife']);
console.log(mrDeng);
3. 包装类
-
new出来的东西都是对象
//创建对象 var num = new Number(123); var str = new String('abcd'); var boo = new Boolean(true); var obj = new Object(); var car1 = new Car();// //对象的赋值 num.name = '这是一个数字'; num.str= '这是一个字符串'; num.boo= '这是一个布尔值';
-
原始值是没有属性和方法的(不能像对象来用)
//创建一个原始值 var num = 4; //赋值失败,此句无效,当场销毁 num.len = 3; //找不到,输出undefined console.log(num.len);
4. 原型(prototype)
——车间的隐式属性1
- 定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生出的对象,可以继承该原型的属性和方法。原型也是对象。儿子叫
Person
,它叫Person.prototype
,它的属性叫Person.prototype.属性名。
作用:可以提取共有属性,避免代码的耦合(多次执行相同代码)
- 增删改查
-
增:
添加个别属性:
Person.prototype.新属性名 = 属性值;
添加很多属性:
Person.prototype{ name : 'laoDeng'; ege : 18; }
-
删:
delete Person.prototype.属性值;
-
改:
Person.prototype.属性名 = 属性值;
-
查:
Person.prototype;
Person.prototype.属性名;
-
- 原型属性(prototype)里面的属性构造(constructor)是为了找到产品的生产车间
-
代码
//定义Pic里prototype属性里面的属性constructor,为函数名(注意没有括号) Pic.prototype = { constructor : House } function House(){ name : 'house' }; function Pic(){ name : 'pic' }; var pic = new Pic();
//控制台结果,显示了pic的constructor属性已修改 pic.constructor ƒ House(){ name : 'house' }
-
5. 原(__proto__)
——车间的隐式属性2
- 里面放的是原型
- 他其实是一个原型链,在找车间东西的时候,如果找不到,就来找
__proto__
属性之下的原型(prototype)
属性。 - 在定义车间函数的时候:定义了原属性,并指向原型函数(对象)
// function Person(){ var this = { __proto__ : Person.prototype } this.属性名1 = 属性1; this.属性名2 = 属性2; } var person = new Person();