JS创建对象的几种方式
2018-06-24 00:49:42来源:未知 阅读 ()
第一:工厂模式:代码如下
缺点:对象无法识别,因为原型都指向(Object)
function Person(name) { var obj = new Object(); obj.name = name; obj.say = function () { return "我是" + this.name; } return obj }
var person = Person("Ayden") console.log(person.name)//Ayden console.log(person.say())//我是Ayden
第二:构造函数模式:代码如下
优点:实例可以识别为一个特定的类型,即可以分 ‘类’
缺点:每次创建实例时每个方法都要被创建一次
function Person(name) { this.name = name ; this.say = function () { return "我是" + this.name ; } } var person = new Person("Ayden") console.log(person)
构造模式优化:代码如下
优点:解决了 “每次创建实例时每个方法都要被创建一次“” 的问题
缺点:面向对象三大特性之一——封装。这叫啥封装?
function Person(name) { this.name = name ; this.say = say } function say() { return "我是" + this.name; } var person = new Person("Ayden") console.log(person)
第三:原型模式:代码如下
优点:实例的方法不会重新创建
缺点:1. 所有的属性和方法都共享 2. 不能初始化参数 3.总想把代码写到一起,即封装
function Person() { } Person.prototype.name = "Ayden"; Person.prototype.say = function () { return "我是" + this.name } var person = new Person(); console.log(person)
原型模式优化:代码如下
优点:封装性好些
缺点:丢失了constructor属性
function Person() { } Person.prototype = { name :"Ayden", say :function () { return "我是" + this.name } } var person = new Person()
原型模式再优化:
优点:实例可以通过constructor属性找到所属构造函数
缺点:1. 所有的属性和方法都共享 2. 不能初始化参数
function Person() { } Person.prototype = { constructor: Person, name: "Ayden", say: function () { return "我是" + this.name } } var person = new Person()
第四:混合模式:代码如下:
优点:该私有的私有,该共享的共享(使用最广泛的方式)
缺点:希望全部写在一起,即更好的封装性
function Person(name) { this.name = name ; } Person.prototype = { say:function () { return "我是" + this.name } } var person1 = new Person("Ayden"); var person2 = new Person("Tom")
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- javascript面向对象入门基础详细介绍 2020-03-29
- 使用JS在浏览器中判断当前网络连接状态的几种方法 2020-03-12
- js调用刷新界面的几种方式 2020-03-05
- jquery遍历筛选数组的几种方法和遍历解析json对象 2020-02-29
- jquery 操作iframe的几种方法总结 2020-02-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash