分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

JS创建对象的几种方式

发布时间:2023-09-06 01:25责任编辑:董明明关键词:暂无标签

第一:工厂模式:代码如下

缺点:对象无法识别,因为原型都指向(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)//Aydenconsole.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")

JS创建对象的几种方式

原文地址:http://www.cnblogs.com/kaw19950302/p/7854205.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved