创建对象方式
// 方式1
var obj1 = {"name": "方式1"}
// 方式2
var obj2 = {name: "方式2"}
// 方式3
var obj3 = new Object({"name": "方式3"});
// 方式4
var obj4 = new Object();
obj4.name = "方式4"
// 方式5:通过对象构造器创建对象
function ByMethodCreateObj(name) {
this.name = name;
}
var obj5 = new ByMethodCreateObj("方式5")
// 方式6:通过class关键字创建对象,也有自己的构造器,与方式5很类似
class TestClass {
staticClassVariable = "我是类属性"
staticGetClassVariable() {
console.log("我是类方法")
return this.staticClassVariable
}
constructor(name) {
this.name = name
TestClass.prototype.testPrototype = function () {
console.log("添加类自己的原型链属性")
}
/*
此处的箭头函数使用起来与上方一样,可能需要注意this的指向问题
TestClass.prototype.testPrototype = () => {
console.log("添加类自己的原型链属性")
}
*/
}
getName() {
console.log("访问实例属性")
return this.name;
}
setName(name) {
console.log("设置实例属性")
this.name = name
}
}
var obj6 = new TestClass("方式6")
// 序列化时会自动忽略方法属性
console.log(JSON.stringify(obj6))
// ##################################### [ 特别的 ] #####################################
var obj7 = {
// 字段属性
"name": "方式7",
m1: function () {
console.log('方法属性1')
},
m2: () => {
console.log('方法属性2')
},
"m3": () => {
console.log('方法属性3')
}
}
// 序列化时自动忽略方法属性
console.log(JSON.stringify(obj7))
遍历对象的属性
var testObj = {
"field1": "1",
"field2": "2",
"field3": "3",
"field4": "4",
"field5": "5",
"field6": "6",
"field7": "7"
}
for (i in testObj) {
console.log("key:" + i)
}