JS面向对象

来自CloudWiki
跳转至: 导航搜索

面向对象

面向对象编程 Object Oriented Programming OOP

例子:

司机 属性: 姓名 性别 年龄 籍贯 …
技能(方法): 喷人 鸣笛 打方向盘 踩油门
司机 — 对象(类别)
小张 — 司机的实例

JavaScript的面向对象编程和大多数其他语言如Java、C#的面向对象编程都不太一样。如果你熟悉Java或C#,你一定明白面向对象的两个基本概念:

  • 类:类是对象的类型模板,例如,定义Car类来表示车,类本身是一种类型,Car表示车的类型,但不表示任何具体的某辆车。
  • 实例:实例是根据类创建的对象,例如,根据Car类可以创建出benz等多个具体实例,每个实例表示一个车,他们全都属于Car类型。

所以,类和实例是大多数面向对象编程语言的基本概念。

不过,在JavaScript中,这个概念需要改一改。JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。

var Car = function(){
    // benz.price=10000;
    this.price = 100000;    
};
var benz = new Car();  //创建实例对象
console.log(benz.price);  //100000

也可以通过传参数的方法,来设置对象的属性:

var Car = function( p ){
    this.price = p; 
};
var benz = new Car(50);  //创建实例对象,传入参数p
console.log(benz.price);  //50

严格模式

严格模式通过在脚本或函数的头部添加 “use strict”; 表达式来声明。

  • “use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。
  • 它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。
  • “use strict” 的目的是指定代码在严格条件下执行。
  • 严格模式下你不能使用未声明的变量。

实例:

x = 3.14;       // 不报错 
myFunction();

function myFunction() {
   "use strict";
    y = 3.14;   // 报错 (y 未定义)
}