JavaScript核心基础(下)

面向对象的编程特点#

 

不像JAVA、C++这些面向对象的语言建立在类和继承基础上(类继承),JavaScript仅仅只有对象的概念。因此,JavaScript不能通过实例化类来产生对象,它是一种原型继承。

总览#
class1 = function() {
   
// var定义的私有变量
   
var m_first = 1;
   
var m_second = 2;
   
// 两种定义方法的形式
   
function method1() {
        alert
(m_first);
   
}
   
var method2 = function() {  //匿名函数赋予私有变量,也就是函数直接量
        alert
(m_second);
   
}
   
// 公有静态变量
    class1
.field1 = 1;

   
// 公有静态方法
    class1
.method1 = function() {
      alert
(class1.field1);
   
}
   
// 构造函数,或者定义私有变量引用构造函数
   
{                 //加括号更清晰
        method1
();
        method2
();
   
}
   
// 构造函数,使用私有变量引用构造函数
   
function constructor() {
        method1
();
        method2
();
   
}
   
constructor();
}
var o = new class1();
// error
alert
(o.m_first);
o
.method1();
构造函数#

JavaScript没有构造函数的概念,所有的function都可以作为构造函数来产生对象,产生对象利用new操作符。与Java等静态语言在编译时就把对象的属性和方法确定下来不同,JavaScript可以在运行时动态的增加对象的属性和方法。

function WorkerBee () {      //构造函数
         
this.projects = [];
         
}
jane
= new WorkerBee();
jane
.salry = 4000; //动态指定了salry属性
继承#

 

JavaScript利用prototype产生继承

function Manager () {
         
this.reports = [];
         
}

         
Manager.prototype = new Employee;  //Manager继承自Employee

function WorkerBee () {
         
this.projects = [];
         
}

         
WorkerBee.prototype = new Employee;

当指定了继承关系后,由于JavaScript解释器会沿着prototype链来查找变量,所以子类未定义的变量(相当于属性)都来自于父类;而如果在继承类中重新定义父类存在的变量,父类的变量就被覆盖了,相当于实现了OverRide机制。

利用“||”运算符可以实现overload机制,例如

function Worker(name){
this.name = name || ""; //name若没有参数则赋值""
}
相当于JAVA代码:
class Worker{
Worker(String name)
{
this.name = name;
}
Worker()
{
this.name = "";
}
}

由于JavaScript的灵活性,实现继承的方法不局限于此,JavaScript的继承就总结了数种写法。

浏览器载入#

 


参考文章#

理解 JavaScript 闭包,对闭包介绍的比较透彻的文章,很长

JavaScript的继承,通过Java和JavaScript的对比,讨论了JavaScript的继承体系

在Javascript中使用面向对象的编程

在Javascript中使用面向对象

用函数式编程技术编写优美的 JavaScript

跨越边界: JavaScript 语言特性

参考书籍#

JavaScript权威指南

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值