js对象不必过多解释了,我记得十几年前刚接触js时,有人说js不是面向对象的,而是基于对象的,那会还没有ES5,ES6等等,主流浏览器可能还是IE,但是现在大不同了,js已经成为开发语言第一梯队了。
let person = {
name: '硬汉',
age: 36,
address: '北京',
['P'+2*3]: '这是什么鬼?', // 属性名可以是一个表达式,但是需要用中括号包裹
intro: function() { // 定义对象的方法
console.log(`我是${this.name},今年${this.age}岁了,在${this['address']}上班`);
},
intro2() { // 定义方法的新语法
console.log(` 我是${this.name},今年${this.age}岁了,在${this.address}上班 `);
}
};
person.intro(); // 我是硬汉,今年36岁了,在北京上班
person['intro'](); // 括号访问方法?
function Person(name, age, address) { // 首字母推荐大写?看着更像是类
this.name = name;
this.age = age;
this.address = address;
this.intro = function () {
console.log(`我是${this.name},今年${this.age}岁了,在${this['address']}上班`);
}
}
let person = new Person('硬汉', 36, '北京'); // 用new关键字实例化
person.intro(); // 我是硬汉,今年36岁了,在北京上班
需要注意的是:
对象的属性,比如name,可以用引号包裹,也可以不用,但是如果有特殊字符,比如空格,-等,那就需要包裹。
新版js声明方法是funcName() {}
,大大简化,我之前不知道,所以第一次看uniapp时感觉这语法咋这么陌生呢,其实早就可以这样了。
属性名可以是表达式,需要用中括号包裹,里面甚至可以调用函数,只要结果是一个字符串即可。
除了可以用.
点语法来访问对象的属性和方法,还可以用中括号,比如:person['name']
,如果属性和方法名有特殊字符,那只能用中括号语法访问。
for(let k in person) {
console.log(k); // 打印对象的属性和方法名
console.log(person[k]); // 打印属性值和方法体
}