`

javaScript之面向对象编程

阅读更多
   
一、自定义构造函数

    即:通过使用 new 操作符调用函数来构造对象。
   
    //定义一个函数
    var Person = function(name){
        this.name = name;
        this.sayHello = function(){
            return "Hi, my name is " + this.name + ".";
        }
    }

    //使用 new 操作符调用函数
    var tom = new Person("Tom");
    tom.sayHello(); // "Hi, my name is Tom."

    当使用 new 操作符调用函数时,将发生一下情况:
   
    1. 创建一个空对象 {} ,并且 this 引用该对象。
    2. 为该对象增加一个属性:__proto__ 。
       该属性指向函数原型的引用。

       函数原型也是一个空对象,在函数创建时被创建,
       同时被增加一个 constructor 属性,指向函数自身。
       var H = function(){};
       console.log( H == H.prototype.constructor); // true

    3. 如果函数没有写return语句的话,返回新创建的对象。
       注意:如果函数中没有定义this,
       该空对象(返回值)至少包含一个属性:__proto__
   
   
   
二、构造函数的返回值

   如果构造函数没有 return 语句,则隐式返回创建的那个新对象。
   但是可以根据需要返回任意对象。(需要写return语句)
  
   var H = function(){
       this.name = "this is this.";
       
       var that = {};
       that.name = "that!";
   
       return that;
   }
   
   //test
   var h = new H();
   h.name; // that!

  
   这种写法的问题在于:新生成的对象丢掉了函数的原型链接。
  
  
  
三、技巧:自调用构造函数(强制使用 new 操作符)

    有时候忘记使用 new 操作符,会出现意想不到的结果。
    
    function H(){
        this.name = "Jake";
    }
    
    var h = H(); 
    console.log(h); // undefined
    


    可以使用 instanceof 关键字 + 递归调用 解决。
    
    function H(){
        if(!(this instanceof H)){
            return new H();
        }
        this.name = "Jake";
    }
    
    //test
    var h1 = new H(),
        h2 = H();
    
    console.log(h1.name); // Jake
    console.log(h2.name); // Jake




—————————————

javascript 函数基础系列文章

1、JavaScript之变量的作用域
2、javascript之变量类型与变量声明及函数变量的运行机制
3、javaScript之function定义
4、javascript之function的prototype对象
5、javascript之function的(closure)闭包特性
6、javascript之function的this   
7、javascript之function的apply(), call()



___________


javascript 面向对象编程系列文章:

    1、javaScript之面向对象编程
    2、javascript之面向对象编程之属性继承
    3、javascript之面向对象编程之原型继承 
   

-



-
引用请注明,
原文出处: http://lixh1986.iteye.com/blog/1958956





-





引用:

Javascript 面向对象编程(一):封装
Javascript面向对象编程(二):构造函数的继承
Javascript面向对象编程(三):非构造函数的继承



______________________________________________________________________________



分享到:
评论

相关推荐

    Javascript面向对象编程.

    在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...

    JavaScript面向对象编程指南

    《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。

    JavaScript面向对象编程指南.pdf

    JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库

    JavaScript面向对象编程指南(第2版).rar

    JavaScript是一种广泛...通过深入学习这本《JavaScript面向对象编程指南(第2版)》,开发者不仅能掌握JavaScript的面向对象编程基础,还能了解到实际项目中如何有效地运用这些知识,提升编程技巧和解决问题的能力。

    javascript面向对象编程

    面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的...

    javascript面向对象编程.pdf

    总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...

    JavaScript面向对象编程指南 pdf

    下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **类与对象** - 在JavaScript中,对象是键值对的集合,可以通过字面量语法或构造函数创建。例如: ```javascript const person = { ...

    JavaScript面向对象编程.pdf

    JavaScript面向对象编程.pdf

    JavaScript面向对象编程指南完整版

    JavaScript面向对象编程指南是完整的扫描版...

    JAVASCRIPT 面向对象编程精要

    ### JavaScript面向对象编程精要 #### 一、引言 JavaScript是一种灵活且强大的脚本语言,它虽然起源于一种简单的浏览器脚本语言,但随着时间的发展,JavaScript已经成为了一种功能全面的编程语言,尤其是在Web开发...

    Javascript面向对象编程

    ### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...

    JavaScript面向对象程序设计

    在JavaScript面向对象编程中,随着Web2.0和Ajax技术的普及,JavaScript的角色从简单的表单验证扩展到了复杂的数据交互和页面动态更新。采用面向对象的编程风格可以使代码结构更加清晰,便于管理和维护。例如,...

    JavaScript学习深入—面向对象编程

    这种独特的设计使得JavaScript能够支持多种面向对象编程特性,同时保持语法的简洁性和灵活性。 #### 二、JavaScript的基本数据类型 JavaScript中包含以下几种内置的数据类型: 1. **Undefined**:表示未定义或...

    面向对象JavaScript精要(英文原版pdf)

    Zakas编写,是面向对象编程领域中的权威指南之一,尤其针对JavaScript这门语言。作者深入浅出地介绍了面向对象编程的基本原理以及如何将这些原理应用于JavaScript中。 #### 二、面向对象编程基础 面向对象编程...

Global site tag (gtag.js) - Google Analytics