博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 创建对象
阅读量:5932 次
发布时间:2019-06-19

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

1.工厂模式

function createPerson(name, age, job) {            var o = new Object();            o.name = name;            o.age = age;            o.job = job;            o.sayName = function () {                alert(this.name);            };            return o;        }        var person1 = createPerson("Nicholas", 29, "Software Engineer");        var person2 = createPerson("Greg", 62, "Doctor");

2.构造函数模式

function Person(name, age, job) {            this.name = name;            this.age = age;            this.job = job;            this.sayName = function () {                alert(this.name);            };        }        var person1 = new Person("Nicholas", 29, "Software Engineer");        var person2 = new Person("Greg", 62, "Doctor");        //与工厂模式的不同点        //1.没有显示创造对象        //2.直接将属性和方法赋值给this        //3.没有return语句        //4.使用new创造对象        //使用方式        //1.当做构造函数使用        var person = new Person("Nicholas", 29, "Software");        person.sayName();//Nicholas        //2.作为普通函数调用        Person("Yellow", 27, "Doctor");        window.sayName();//Doctor        //3. 在另一个对象的作用域中调用        var o = new Object();        Person.call(o, "King", 25, "Nurse");        o.sayName();//King                //缺点:每个方法都要在每个实例上重新创建一遍

3.原型模式

function Person() {        }        Person.prototype.name = "Yellowshorts";        Person.prototype.age = 29;        Person.prototype.job = "Software";        Person.prototype.sayName = function () {            alert(this.name);        }        var person1 = new Person();        person1.sayName();//Yellowshorts        var person2 = new Person();        person2.sayName();//Yellowshorts        alert(person1.sayName == person2.sayName);//true

 

转载于:https://www.cnblogs.com/Yellowshorts/p/4103982.html

你可能感兴趣的文章
从 ELK 到 EFK 演进
查看>>
学习手记-如何找到man手册中函数参数的类型定义
查看>>
ansible基础一
查看>>
git 项目迁移
查看>>
微信冷知识|那些朋友圈文字被折叠的原因所在
查看>>
知识回顾
查看>>
JAVA实现图片等比例缩略图的实现方式和相关工具
查看>>
配置nginx作为web server
查看>>
我的友情链接
查看>>
python 利用random的shuffle洗牌方法生产1个12位数的随机密码
查看>>
MySQL存储引擎--MyISAM与InnoDB区别
查看>>
Android音频开发(4):如何存储和解析wav文件
查看>>
Tomcat乱码解决方法
查看>>
图的顶点间最小路径问题
查看>>
JDK8环境变配置量
查看>>
20个非常有用的Java程序片段(一)
查看>>
使用jQuery.form.js/springmvc框架实现文件上传功能
查看>>
Java调用python脚本
查看>>
VS2017安装ReSharper
查看>>
copy 的实现原理与深浅拷贝
查看>>