1.对象定义:
(1)现实生活:具体的事物,而不是泛指的集合
(2)js中:是一组无序的相关属性和方法的集合,如字符串、数值、数组、函数等。
2.调用采用对象名.方法名(),对象名.属性 或 对象名['属性名']。
3.创建对象
方法1:创建对象: '{}', 采用键值对方法,多个属性和方法用逗号隔开,方法要用function
var obj = {};//创建了一个空对象
var obj = {
uname: '张三',
age: 18,
sex: '男',
sayHi: function () {
console.log('Hi~');
}
}
console.log(obj.uname);
console.log(obj['age']);
obj.sayHi();
方法2:new 方法
var obj = new Object();//空对象
obj.uname = '张三';
obj.age = 19;
obj.sex = '男';
obj.sayHi = function () {
console.log('Hi~');
}
1和2运行结果:
方法3:用构造函数创建
(前面两种方法是能创建一个对象),将相同属性和方法封装到函数里面。
构造函数首字母大写,不需要返回return结果,属性方法前用this,调用构造函数必须要new,也就是创造了一个对象。
function Star(uname, age, sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function (sang) {
console.log(sang);
}
}
var ldh = new Star('刘德华', 18, '男');//new就可生成一个对象
console.log(typeof (ldh));//返回的是对象
console.log(ldh.name);
console.log(ldh['sex']);
ldh.sing('冰雨');
运行结果
王者荣耀英雄构造函数例子
function Hero(uname, kind, power) {
this.name = uname;
this.kind = kind;
this.power = power;
this.attack = function (action) {
console.log(action);
}
}
var lp = new Hero('廉颇', '力量型', '500血量');
var hy = new Hero('后裔', '射手型', '100血量');
lp.attack('近战');
hy.attack('远战');
console.log(lp.power);
4.变量、属性、函数、方法的区别:
·变量和属性都是用来存储数据的
·变量可要声明并赋值,单独存在;属性不需声明,用的时候必须要有对象
函数和方法都是实现某种功能,做某件事
函数单独声明,调用fn();方法调用要有对象
构造函数和对象的区别:前者是泛指某一大类,后者是具体的事物
5.练手:分别用上面3中创建对象的方法对下面个例子创建对象
案例1(方法1):创建电脑对象,有颜色,重量,品牌,型号,可以看电影,打游戏和敲代码
var computer = {
color: 'pink',
weight: 2,
brand: '联想',
model: 'xxxxx',
watchMovie: function () {
console.log(我可以看电影);
},
listenMusic: function () {
console.log(我可以看电影);
},
codding: function () {
console.log(我可以看电影);
}
}
console.log(computer);
案例2(方法2):创建一个按钮对象,对象中包含宽、高、背景颜色、以及点击行为
var button = new Object();
button.width = 50;
button.height = 20;
button.color = 'blue';
button.act = function () {
console('我会点击');
}
console.log(button);
案例3(方法3):创建一个车对象,有重量,颜色,品牌,可载人,拉货,耕田
function Car(weight, color, brand) {
this.weight = weight;
this.color = color;
this.brand = brand;
this.act = function (action) {
console.log(action);
}
}
var mycar = new Car('200', 'black', '蔚来');
console.log(mycar.brand);
mycar.act('载人');
mycar.act('耕田');