Javascript Design Patterns - Js Class

简介: JavaScript is a class-less language, however classes can be simulated using functions.  eg: // A car 'class' function Car(model) { this.

JavaScript is a class-less language, however classes can be simulated using functions. 

eg:

// A car 'class'
function Car(model) { 
    this.model = model; 
    this.color = 'silver'; 
    this.year = '2012'; 
    this.getInfo = function () {
        return this.model + ' ' + this.year; 
    }
}

We can then instantiate the object using the Car constructor we defined above like this: 

var myCar = new Car('ford'); 
myCar.year = '2010'; 
console.log(myCar.getInfo());

 

另一个例子

var Person = function (name) { 
    this.name = name;
    this.say = function () {
        return "I am " + this.name; 
    };
};

// use the class
var adam = new Person("Adam"); 
adam.say(); // "I am Adam"

 

上述关于类函数的做法性能不佳,原因如下:

any time you call new Person() a new function is created in memory.

This is obviously inefficient, because the say() method doesn’t change from one instance to the next.

(每次new对象的时候会在内存中新建一个函数)

 

The better option is to add the method to the prototype of Person 

(比较好的方法是把方法增加到Person对象的prototype)

Person.prototype.say = function () {
    return "I am " + this.name; 
};

 

just remember that reusable members, such as methods, should go to the prototype 

(关于JS类必须要记住的是,可重用的成员,例如方法必须放到对象的prototype)

 

 

目录
相关文章
|
9月前
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
552 24
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
269 32
|
11月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
245 3
springboot解决js前端跨域问题,javascript跨域问题解决
|
JavaScript 前端开发
【JavaScript】——JS基础入门常见操作(大量举例)
JS引入方式,JS基础语法,JS增删查改,JS函数,JS对象
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
Web App开发 JavaScript 前端开发
JavaScript 类(class)
JavaScript 类(class)
154 2
JavaScript 类(class)