现总结一下Javascript创建类和对象的几种方法: 1、原始的创建方法: [removed] var person = new Object(); person.name="Amy"; person.sex="Woman"; person.show=function(){ [removed]("name is: "+this.name+" ; sex is:"+this.sex); } person.show(); [removed] 原始的创建方法对于熟悉面向对象的人来说难以接受,总感觉属性和方法的 JavaScript 是一种动态类型的脚本语言,它在实现面向对象编程时有着独特的机制。本文将详细介绍JavaScript中创建类和对象的几种方法。 1. **原始创建方法** JavaScript 的原始创建对象的方法是通过 `new Object()` 创建一个空对象,然后通过点操作符 `.` 添加属性和方法。例如: ```javascript var person = new Object(); person.name = "Amy"; person.sex = "Woman"; person.show = function() { document.write("name is: " + this.name + " ; sex is:" + this.sex); } person.show(); ``` 这种方式虽然简单,但不够优雅,属性和方法的封装性较差,每个对象都有独立的函数副本。 2. **工厂方法模式** 工厂方法是一种封装对象创建的模式,它通过一个函数来创建和返回对象。这样可以改善原始创建方法的封装性: ```javascript function personFactory(name, age, sex) { var ob = new Object(); ob.name = name; ob.age = age; ob.sex = sex; ob.show = show; return ob; } function show() { document.write(this.name + " " + this.age + " " + this.sex); } var person = personFactory("Amy", 22, "Woman"); person.show(); ``` 这种方式通过工厂函数创建对象,但每次调用 `show` 都会创建新的函数实例,不利于函数重用。 3. **构造函数模式** 构造函数是更接近于传统面向对象语言的创建对象方式,它使用 `function` 关键字定义类,并通过 `new` 关键字创建对象: ```javascript function person(name, age, sex) { this.name = name; this.age = age; this.sex = sex; this.show = function() { document.write(this.name + " " + this.age + " " + this.sex + "<br>"); } } var per = new person("Amy", 22, "Woman"); per.show(); ``` 构造函数模式提高了封装性,但每个对象仍然有独立的 `show` 函数副本。 4. **动态原型方法** 动态原型方法旨在解决每个对象都拥有独立函数副本的问题,通过检查原型(`prototype`)是否存在所需方法,如果不存在则添加: ```javascript function Person(name, age, sex) { this.name = name; this.age = age; this.sex = sex; if (typeof Person.prototype.show == "undefined") { Person.prototype.show = function() { document.write(this.name + " " + this.age + " " + this.sex + "<br>"); } Person.prototype.tag = true; // 标记已添加show方法 } } var amy = new Person("Amy", 22, "Woman"); amy.show(); ``` 动态原型方法确保所有实例共享同一个 `show` 函数,提高了性能和代码复用。 5. **ES6 Class语法** ES6 引入了更符合面向对象编程习惯的 `class` 语法糖,其实质仍然是基于原型的实现: ```javascript class Person { constructor(name, age, sex) { this.name = name; this.age = age; this.sex = sex; } show() { console.log(this.name + " " + this.age + " " + this.sex); } } let amy = new Person("Amy", 22, "Woman"); amy.show(); ``` `class` 语法使得代码更简洁、易读,但底层原理与构造函数模式类似。 总结来说,JavaScript 创建类和对象的方法包括原始方法、工厂方法、构造函数模式和动态原型方法,随着语言的发展,还有ES6的Class语法。每种方法都有其适用场景,开发者可以根据实际需求选择合适的方式来实现面向对象编程。































- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 房产公司档案管理制度.doc
- 城市集中供热工程安全施工组织设计.doc
- 工业源扩散预测计算.doc
- [PPT]工程结算管理中需要注意的问题.ppt
- 氧压机组精调垫铁低压缸起始安装施工工法.doc
- 建设工程施工安全标准化管理资料(已排版).doc
- 微信小程序 Artand.zip
- 工程管理流程(已交).doc
- 微信小程序 小程序模板 小程序可视化设计工具 Taro Taro UI.zip
- 广州市第四装修有限公司临时用电方案模板.doc
- 小知识审计、社会审计、工程审计、工程审价.doc
- 员工绩效考核表(公司总经理).doc
- 学校综合教学校投标书.doc
- Awesome for wepy ! 微信小程序组件化开发框架wepy开发资源汇总.zip
- 大型研究所施工组织设计.doc
- 清单计价规范宣贯(5月).ppt


