javaScript面向对象的几种写法

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

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

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);

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

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


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

查看所有标签

猜你喜欢:

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

Python语言及其应用

Python语言及其应用

[美] Bill Lubanovic / 丁嘉瑞、梁杰、禹常隆 / 人民邮电出版社 / 2016-1 / 79.00元

本书介绍Python 语言的基础知识及其在各个领域的具体应用,基于最新版本3.x。书中首先介绍了Python 语言的一些必备基本知识,然后介绍了在商业、科研以及艺术领域使用Python 开发各种应用的实例。文字简洁明了,案例丰富实用,是一本难得的Python 入门手册。一起来看看 《Python语言及其应用》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具