javaScript面向对象的几种写法

栏目: 后端 · 前端 · 发布时间: 7年前

内容简介:希望可以帮到有需要的人,如果有什么问题,望指出(写的第一篇文章,需要的到你们的鼓励和赞)

javaScript面向对象的几种写法

  • 一般写法,也是最浪费资源的写法。dog.run()就调用了dog的run方法。但是这里只有一条狗,想要n条狗就要var狗,不能量产,不推荐。
var dog = {
        name:'啊黄',
        color:'黄色',
        run:function () {
            console.log('run');
        }
    };
    console.log(dog.name);
    dog.eat();
  • 常用的写法,这里可以量产还可以传递参数,如var dog1 = new Dog(‘旺财’,‘yellow’);就有了dog1,以此类推就有dog2,dog3···,但是这种方法是借助创建Object对象来创建d,然后返回d来实现的,这种方法难免有点多余。
function Dog(name,color) {
        var d = new Object();
        d.name = name;
        d.color = color;
        d.run = function () {
            console.log('run');
        };
        return d;
    }
    var dog1 = new Dog('旺财','yellow');
    console.log(dog1.name);
    dog1.run();
  • 构造函数创建对象,构造函数的方法是通过构造函数与new关键字连用,在内部创建一个对象,在这不用使用ruturn关键字就可以把这个对象返回。这种方法每new一个dog,都会为这个dog产生相应的属性和run(),不知道你们有没有注意到这个run方法是一样的,为了更好地节约资源···
function Dog(name,color) {
        this.name = name;
        this.color = color;
        this.run = function () {
            console.log(this.name + 'run');
        };
    }
    var dog1 = new Dog('旺财','yellow');
    console.log(dog1.name);
    dog1.run();
    var dog2 = new Dog('阿毛','white');
    //dog1的run并不等于dog2的run
    console.log(dog.eat === dog1.eat);
  • 构造函数创建对象使用原型来保存相同的方法,使用原型这种方法把run()放进这个构造函数的共享库里面(这个run()只有一个),通过Dog new 出来的对象都可以使用这个方法。
function Dog(name,color) {
        this.name = name;
        this.color;
}
Dog.prototype.run = function () {
    console.log(this.name + 'run');
};
var dog1 = new Dog('旺财','yellow');
console.log(dog1.name);
dog1.run(); 
var dog2 = new Dog('阿毛','white');
//dog1的run等于dog2的run
console.log(dog.eat === dog1.eat);
  • 传递对象来接受属性
function Dog(option) {
        var option = option || {};
        this.name = option.name;
        this.color = option.color;
    }
    Dog.prototype = {
        run:function () {
            console.log(this.name  + 'run');
        }
    };
    var dog1 = new Dog({
        name:'旺财',
        color:'yellow'
    });
    console.log(dog1.name);
    dog1.run();
    var dog2 = new Dog({
		name:'啊毛',
        color:'white'
	});
    //dog1的run等于dog2的run
    console.log(dog.eat === dog1.eat);

希望可以帮到有需要的人,如果有什么问题,望指出

(写的第一篇文章,需要的到你们的鼓励和赞)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

不止情感设计

不止情感设计

陈华 / 电子工业出版社 / 2015-5-21 / 59.00

本书着眼于“设计&心理”两个主要的维度,围绕“创新式思维2.0”(共情—移情—定义—构思—建模—测试)的模式,分析如何“理解一款好的产品设计”、“如何了解用户需求”、“如何从需求来定义产品”的几个步骤,由浅入深地介绍设计师通过洞察和理解用户内在需求来指导产品创新和设计的理念。一起来看看 《不止情感设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具