您现在的位置: 主页 > 装修 > 正文

编写高质量代码:改善JavaScript程序建议--面向对

2020-07-11 09:17  来源:原创   字号:T | T

  JavaScript是基于对象的弱类型语言,它是以对象为基础,以函数为模型,以原型为继承机制的开发模式。

  ? 对象(Object)是没有原型的,只有构造函数拥有原型,而构造类的实例对象能够通过prototype属性访问原型对象。 prototype表示类的原型,就是构造类拥有的原始成员。构造函数的prototype属性存储着一个引用对象指针,该指针指向一个原型对象。

  ? 所有的函数在其定义时就已经自动创建和初始化好了prototype属性,这个初始化好的prototype属性指向一个只包含一个constructor属性的对象,并且这个constructor属性指向这个function自身。

  ? 当构造函数实例化后,所有实例对象都可以访问构造函数的原型成员。如果在原型对象中声明一个成员,则所有实例对象都可以共享它。

  ? Object与Function之间关系非常微妙,它们都是高度抽象的类型,互为对方的实例。

  类型、原型和对象实例之间的关系

  ? 原型关系是一种动态的关系,如果添加一个新的属性到原型中,那么该属性会立即被所有基于该原型创建的对象继承。

  这里写图片描述

  稳妥起见,可以通过&&运算符避免上述错误!

  使用for…in语句,可以遍历对象中所有属性(包括原型);只遍历自身可枚举属性。

  使用方法过滤原型属性

  使用运算符排除方法函数

  ? 在JavaScript中,function是作用于词法范围而不是动态运行范围的(词法作用域)。

  ? 当function作为对象的方法运行是,this是该对象的引用;如果该function没有作为对象的方法,则this代表全局对象。

  ? 解决上述问题的通常做法是在将外部function的this值保存到某变量中,在内部函数中更使用。

  ? 在JSON字符串中加上一对括号,这样做可以迫使eval方法在评估JavaScript代码时强制作为表达式执行从而得到JSON对象,而不是作为语句执行。

  注意:和

  ? this指向的对象是由this所在执行域(运行环境)决定的,而不是由this所在的定义域决定的。它始终指向当前调用对象。在JavaScript中类似指针特性的标识还有如下3个:

  callee:函数的参数集合包含的一个静态指针,它始终指向参数集合所属的函数;

本文相关新闻推荐: