博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中创建对象的4种方式
阅读量:6072 次
发布时间:2019-06-20

本文共 2387 字,大约阅读时间需要 7 分钟。

hot3.png

JavaScript中创建对象的4种方式:

        第一种:工厂模式

        第二种:构造函数模式

        第三种:原型模式

        第四种: 构造函数+原型模式(构造函数中声明属性,原型对象中处理函数)

//(1)工厂模式        function createPerson(name,age,gender) {            var o = new Object();            o.name = name;            o.age = age;            o.gender = gender;            o.sayName = function () {                alert('hello');            };            return o;        }        var val = createPerson('joy',23,'female');        console.log(val);        console.log(typeof  val);        var val1 = createPerson('lpen',27,'male');        console.log(val1);        console.log(typeof val1);        //缺点:无法识别对象类型,即所有对象都是object        //(2)构造函数模式        var run = function () {            alert('hhh');        }        function Person(name,age,gender) {            this.name = name;            this.age = age;            this.gender = gender;            this.run = run;        };        var person = new Person('lpen',27,'male');        console.log(person);        console.log(typeof  person);        function  Dog(name,age,gender) {            this.name = name;            this.age = age;            this.gender = gender;            this.run = run;        };        var dog = new Dog('xiaohua',2,'female');        console.log(dog);        console.log(typeof  dog);        console.log(person.run == dog.run);        //使用new调用构造函数创建一个对象        //1.创建一个对象        //2.将构造函数的作用域赋给新对象        //3.执行构造函数中的代码        //4.返回新对象        //问题:(1)每个方法都需要在每个实例上创建一遍,其实没有必要。可以在全局范围中声明一个函数,将该函数的引用传递        //给对象的函数属性,但是这样会导致全局函数太多,体现不了封装性        //(3)原型模式        function Person() {        }        Person.prototype.name = 'joy';        Person.prototype.age = 23;        Person.prototype.gender = 'female';        Person.prototype.say = function () {            alert('hello');        }        var p1 = new Person();        p1.name = 'lpen';        console.log(p1);        var p2 = new Person();        console.log(p2);        //构造函数+原型模式(构造函数中声明属性,原型对象中处理方法)        function Person(name,age,gender) {            this.name = name;            this.age = age;            this.gender = gender;        }        Person.prototype.say = function () {            alert('say');        };        Person.prototype.run = function () {            alert('run');        }        var p1 = new Person('joy',23,'female');        console.log(p1);        p1.say();        p1.run();

 

转载于:https://my.oschina.net/yj1993/blog/1490336

你可能感兴趣的文章
python安装libxml2和pyquery
查看>>
Oracle 权限(grant、revoke)
查看>>
Prototype 原型模式 复制 Cloneable clone
查看>>
ios随机数
查看>>
Android--RecyclerView的封装使用
查看>>
浅谈ITIL
查看>>
高可用与负载均衡(3)之七层负载均衡的概念
查看>>
问题记录:EntityFramework 一对一关系映射
查看>>
微信上可以借钱啦!据说仅部分用户能看到
查看>>
全文检索(elasticsearch入门)
查看>>
Go目录
查看>>
关于跳板机穿透的文章 (未验证)
查看>>
[GitHub] GitHub Repositories
查看>>
怎样打造一个分布式数据库——rocksDB, raft, mvcc,本质上是为了解决跨数据中心的复制...
查看>>
AngularJs - Javascript MVC 框架
查看>>
ASP.Net数据库如何存取图片
查看>>
云计算学习(5-1)云平台产品介绍-华为的FusionCloud产品
查看>>
{{ }} 和ng-bind
查看>>
关于Task的一点思考和建议
查看>>
微信小程序开发及相关设置小结
查看>>