js创建对象的多种方式

1.字面式声明对象

<script>
    //字面式
    var person = {
        name:'张三',
        age:16,
        run:function () {
            return '走路';
        }
    }
    alert('他叫' + person.name + ',今年' + person.age + '岁了,上学方式是' + person.run())
</script>

2.Object构造对象

因为js中所有对象都是Object的子对象,所以可以new Object操作后构造函数

<script>
    var person = new Object();
    person.name = '李四'
    person.age = 15;
    person.run = function () {
        return '骑车'
    }
    alert('他叫' + person.name + ',今年' + person.age + '岁了,上学方式是' + person.run())
</script>

3.构造方式声明对象

this代表当前对象,函数内部只能用this访问属性和方法

<script>
    function Person(name,age) {
        this.name = name;
        this.age = age;
        this.run = function () {
            alert('他叫' + person.name + ',今年' + person.age + '岁了,上学方式是坐汽车');
        }
    }
    var person = new Person('王五',17);
    person.run();
</script>

4.构造函数创建对象

构造器构造的对象,效率低,并且参数顺序在函数体不能变

<script>
    var obj = new Function('num1','num2','return num1 + num2');
    var result = obj(2,8);
    alert(result);
</script>

5.工厂方式声明对象

<script>
    function createObject(name,age) {
        var person = new Object();
        person.name = name;
        person.age = age;
        person.run = function (tool) {
            alert('他叫' + this.name + ',今年' + this.age + '岁了,上学方式是' + tool);
        }
        return person;
    }
    var person = createObject('王五',16);
    person.run('坐船')
</script>

6.原型模式声明对象

任何js方式或函数,都自带一个prototype属性,而且是以对象的方式存在。可让所有实例化的对象都拥有它包含的属性和方法

<script>
    function Person() {
    }
    Person.prototype.name = '马六';
    Person.prototype.age = 17;
    Person.prototype.run = function (tool) {
        alert('他叫' + this.name + ',今年' + this.age + '岁了,上学方式是' + tool);
    };
    var person = new Person();
    person.run('坐飞机');
</script>

7.混合模式声明对象

<script>
    function Person(name,age) {
        this.name = name;
        this.age = age;
    }
    Person.prototype = {
        run:function (tool) {
            alert('他叫' + this.name + ',今年' + this.age + '岁了,上学方式是' + tool);
        }
    }
    var person = new Person('马七',18);
    person.run("坐火车");
</script>

 

posted @ 2022-04-07 17:11  一剑天门  阅读(360)  评论(0编辑  收藏  举报