JavaScript之创建对象的方式

来源:互联网 发布:名片设计模板软件下载 编辑:程序博客网 时间:2024/05/29 17:54

方式一(单体模式):

var Tom = {            //单体模式            name:'tom',            age:'18',            showName:function () {                alert(this.name)            },            showAge:function () {                alert(this.age)            }        };        Tom.showAge();        Tom.showName();

方式二(工厂模式):

 //工厂模式        function Person(name,age,job) {            var o = new Object();            o.name = name;            o.age = age;            o.job = job;            o.showName = function () {                alert(this.name)            };            return o        }        var Tom = Person('tom',18,'pythoner');        Tom.showName()

方式三(构造函数):

//构造函数        function Person(name,age,job) {            this.name = name;            this.age = age;            this.job = job;            this.showName = function () {                alert(this.name)            }        }        var Tom = new Person('tom',18,'pythoner');        Tom.showName();

不共享方法,造成资源浪费

方式四(原型模式):

 //原型模式        function Person(name,age,job) {            this.name = name;            this.age = age;            this.job = job        }        Person.prototype.showName = function () {            alert(this.name)        };        var Tom = new Person('tom',18,'pythoner');        Tom.showName();

共享同一个方法,可以自己重写


JS继承

//继承        function Superclass(name,age) {            this.name = name;            this.age = age;        }        Superclass.prototype.showName = function () {            alert(this.name)        };        //属性继承通过call或者apply去实现        function Subclass(name,age,job) {            Superclass.call(this,name,age);            this.job = job;        }        //方法继承通过父类的一个实例对象赋值给子类的原型属性        Subclass.prototype = new Superclass();        Subclass.prototype.showName = function () {            alert(this.name)        };        var Tom = new Subclass('tom',18,'pythoner');        Tom.showName();

call与apply的作用与区别:
    都可以改变this指代的对象,参数传入方式不同,call(this,a,b),apply(this,[a,b])。

这里写图片描述

原创粉丝点击