1. 不过我们之前说过了有 this 和没 this 的时候作用域不同,那个参数只是作用于构造函数中,而加了 this 的那个则是成员变量。用一个 this 就马上区分开来他们了,所以即使同名也没关系。

2. 类的声明和实例化

声明一个类非常简单,大家不要笑:

javascript
function foo() {
    //...
}
好了,我们已经写好了一个 foo 类了。

真的假的?!真的。

不信?不信你可以接下去打一段代码看看:

javascript
var bar = new foo();
别看它是一个函数,如果以这样的形式(new)写出来,它就是这个类的实例化。

而这个所谓的 foo() 其实就是这个 foo() 类的构造函数。

3.  写成员变量的方法:

第一种方法:

复制代码代码如下:
javascript
function foo() {
    this.hello = "world";
}

注意:只有在加了 this 的时候才是调用类的成员变量,否则只是函数内的一个局部变量而已。要分清楚有没有 this 的时候变量的作用范围。

第二种方法就是在构造函数或者任何成员函数外部声明,其格式是 <类名>.prototype.<变量名>:

4.  传递参数可多于或者少于声明。

我们一开始就说了 JavaScript 是一门弱类型语言,其实不仅仅是弱类型,它的传参数也非常不严谨。你可以多传或者少传(只要保证你多传或者少传的时候可以保证程序不出错,或者逻辑不出错),原则上都是可以的。多传的参数会被自动忽略,而少传的参数会以 undefined 补足。

5. 类的随意性

这个又是我胡扯的。所谓类的随意性即 JavaScript 中你可以在任何地方修改你的类,这跟 Ruby 有着一定的相似之处。

比如说 string ,它其实也是一个类,有着诸如 length 这样的成员变量,也有 indexOf、substr 等成员函数。但是万一我们觉得这个 string 有些地方不完善,想加自己的方法,那么可以在你想要的地方给它增加一个函数,比如:

javascript

复制代码代码如下:
String.prototype.sb = function() {
  var newstr = "";
  for(var i = 0; i < this.length; i++) {
    if(i % 2 === 0) newstr += "s";
    else newstr += "b";
  }
  return newstr;
};

6. 深拷贝

所谓深拷贝就是自己新建一个数组或者对象,把源数组或者对象中的基础类型变量值一个个手动拷过去,而不是只把源数组或者对象的引用拿过来。所以这就涉及到了一个递归的调用什么的。

下面是我实现的一个深拷贝函数,大家可以写一个自己的然后加入到自己的 Node.js 知识库中。

javascript

复制代码代码如下:
function cloneObject(src) {
  var dest = {};
  for(var key in src) {
    if(typeof src === "object") dest[key] = cloneObject(src[key]);
    else dest[key] = src[key];
  }
  return dest;
}

最新文章

  1. SQL SERVER 竖表变成横表
  2. [C#].NET中几种Timer的使用
  3. PHP空数组转化为json对象的问题
  4. Spring AOP简述
  5. 在ASP.MVC中使用Ajax
  6. FCM算法
  7. ASP.NET之Ajax系列(二)
  8. linux下的汇编环境搭建(nasm)
  9. 开发者必备,超实用的PHP代码片段(转)
  10. bug - colorWithPatternImage:
  11. wpf msdn在线地址http://msdn.microsoft.com/zh-cn/library/ms752324(v=vs.110).aspx
  12. 用虚拟 router 连通 subnet - 每天5分钟玩转 OpenStack(141)
  13. 【基础网络】TCP与UDP 的区别
  14. LeetCode 191. Number of 1 bits (位1的数量)
  15. 《金领简历:敲开苹果、微软、谷歌的大门》【PDF】下载
  16. centos 6.8 下安装redmine(缺陷跟踪系统)
  17. 数据接口测试工具 Postman 介绍
  18. jQuery插件整理
  19. Linux上统计文件夹下文件个数以及目录个数
  20. c代码片段-注解

热门文章

  1. 关于Springboot中dubbo整合注意的误区(不对之处请指出)
  2. puppeteer,webdriverio, chrome webdriver
  3. ehcache 常用配置项详解(三)
  4. Unity使用native读取streamingasset里文件
  5. 常用的JS代码块收集
  6. Python3.6全栈开发实例[011]
  7. su: warning: cannot change directory to : Permission denied ;-bash: bash_profile: Permission denied
  8. windows 安装 python _ flask
  9. vue_router打包(webpack)
  10. shuit模块