JS中创建对象的几种常见的方式

创建对象方式

// 方式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)
}
posted @ 2023-06-04 23:02  黄河大道东  阅读(5)  评论(0编辑  收藏  举报