`

javascript 基础总结(面向对象)

阅读更多
       javascript 大体上可分为3个不同部分组成: 核心(ECMAscript),文本对象(DOM),浏览器对象(BOM)
核心(ECMAscript): 关键字,语句,运算符,对象
文本对象(DOM):DOM将把整个页面规划成由节点层级构成的文档.
解析遵循 W3C html dom 标准:
  W3C dom 参考特别关注 DOM Node 说明  
BOM 浏览器对象.  cookie,弹出新浏览器,浏览器设置大小
 
核心(ECMAscript)Global 内置对象;
      方法: parseInt(),isNan(),encodeURI()...等都为此对象方法
      特别注意 eval();动态语言的象征 比如:eval("alert('hi')"); 但这个方法很邪恶(安全方面)
文本对象(DOM)说明:
       
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>




             


    

  1. ECMAscript基础

       $ 变量弱类型 ;     匈牙利类型标示 : var iOuouValue=100;

       $ 结束行分号有无都可以;     但再 onsubmit="javascript:function();return false;"

       $ 关键字 ; 提别注意

                "typeof"   var test=1; alert(typeof testX); //output "undefined"

                "NaN" - not a number ->  isNan("blue"); //output "true"   ->isNan("123"); //output "false"

       $ 对象; var o = new Object(); var a = {} 

                这里特别说明下 我们普通写的 一个 function 就是一个 object

              这   var a = {name:"刘凯毅"} 等同与 var a = function(){this.name="刘凯毅"};

                    来个 {name:"test",pass:"123456",addr:"bj"} //这是什么 ?! json

                    当 var str = '{name:"test",pass:"123456",addr:"bj"}'

                    var objectBean = eval(str); //这里就是 对象 objectBea.name 使用了

  域概念:

<SCRIPT type=text/javascript>
var sMessage = 'Hello';
function setSomething() {
  sColor = 'red';
  sMessage = 'Hello World!';
}
setSomething();
alert(sMessage); //Hello World!
alert(sColor); //red
</SCRIPT> <SCRIPT type=text/javascript>
var sMessage = 'Hello';
function setSomething() {
  var sColor = 'red';
  sMessage = 'Hello World!';
}
setSomething();
alert(sMessage); //Hello World!
alert(sColor); // 什么都没有
</SCRIPT>

<SCRIPT type=text/javascript>
var sMessage = 'Hello';
function setSomething() {
  var sColor = 'red';
  var sMessage = 'Hello World!';
}
setSomething();
alert(sMessage); //Hello
alert(sColor); // 什么都没有
</SCRIPT>

          

为面向对象做基础:object prototype 类型的对象应用。参考

// 最简单的 继承
Object.prototype.inObj = 1;

function A()
{
    this.inA = 2;
}

A.prototype.inAProto = 3;

B.prototype = new A;            // Hook up A into B's prototype chain
B.prototype.constructor = B;
function B()
{
    this.inB = 4;
}

B.prototype.inBProto = 5;

x = new B;
document.write(x.inObj + ', ' + x.inA + ', ' + x.inAProto + ', ' + x.inB + ', ' + x.inBProto);

//1, 2, 3, 4, 5
//增加点信心 http://www.json.org/json.js
Object.prototype.toJSONString = function (filter) {
return JSON.stringify(this, filter);
};
后我们就可以使用 bean.toJSONString()不是吗?

    $ arguments ;

         function getFun(){alert(arguments.length);}   ;



                getFun("xx") //output 1

                getFun("xx",23) //output 2





   $ 语句 ;特殊说明下 for

           for(var i=0i<iCount;i++)   或 for( attr in object ) ;

           如果无聊 你可以 for( sProp in window ){alert(sProp+"你丫点啊!");} //看看 javascript 的反射

             

               

  




面向对象:

  var bean = new Bean();

  

  1.工厂方法

            function getAttr(){

                 alert(this.attr)

            }

            function Bean(tattr){

                var bean = new Object;

                bean.attr = tattr;

                bean.getAttr = getAttr;

                return bean ;

            }

        根本就是山寨版 面向对象

  2.构造

          function Bean(tattr){

              this.attr = tattr ;

              bean.getAttr = function(){

                alert(this.attr);

              }   

          }

   其上 2 总 再Bean 对象创建时,方法会 “重复生成函数”!



  3.原型模式

    function Bean(){}

    Bean.prototype.attr = "";

    Bean.prototype.getAttr=function(){alert(this.attr);}

   

   解决 “重复生成函数” 问题,但新的问题 Bean.prototype.getArray = new Array();



   其 new 对象 bean1 和 bean2 都会共享 new Array 空间(是我们不想看到的)



  4.混合 模型  哈哈

     function Bean(){

        this.attr= "";

        this.getArray=new Array;

    }

    Bean.prototype.getAttr=function(){alert(this.attr);}



  5.动态原型 (注意下面开始,就是真正的面向对象!!!)

       function Bean(){

        this.attr= "";
        this.getArray=new Array;

        //classload 加载 时

        if(typeof Bean._initialized == "undefined" ){

            Bean.prototype.getAttr=function(){alert(this.attr);};

            Bean._initialized= true ;

        }

     }

  

/****************************************************************/

对象继承

  1.对象冒充!!(可支持多继承,山寨很强大)

      function classA(sstr){

        this.color = sstr ;

        this.sayColor = function(){

            alert(this.color);

        };

      }

      function classC(){}

       function classB(){

            this.newMethod =ClassA ;

            this.newMethod();

            delete this.newMethod ;



            this.newMethod =ClassC ;

            this.newMethod();

            delete this.newMethod ;

          

            this.arrt = "google";

        }

   

  2.call() apply() 也山寨,

      function classA(sstr){

        this.color = sstr ;

        this.sayColor = function(str){

            alert(str+this.color);

        };

      }

       function classB(){

           // this.newMethod =ClassA ;

           // this.newMethod();

           // delete this.newMethod ;

            classA.call(this,"red");

            //classA.apply(this,new Array("red"))

            this.arrt = "baidu";

       }


3.正统的继承 原型链 (但不支持多继承)
    function classA(){this.oo="test";}
    classA.prototype.color = "red";
    function classB(){}
    classB.prototype = new classA ;
    classB.prototype.sayName = function(){
        alert( this.color );
    }
    var bb = new classB ;
    bb.sayName(); // output red
    alert(bb.oo); // output test

    alert( bb instanceof classA); //output true
    alert( bb instanceof classB); //output  true
4.如果你要多继承!!并且还支持 instanceof
        混合方式:
        function classA(){}
        function classB(){}
        function classC(){
            classA.call(this);
            classC.call(this);
        }
        classC.prototype = new classA ;//注意 这 instanceof 只能对 A有用

分享到:
评论

相关推荐

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

    本书适合有一定JavaScript基础的开发者阅读。通过本书的学习,读者可以深入了解面向对象编程的原理,并掌握如何在JavaScript中有效地运用这些原理来编写高质量的代码。此外,书中还包含了大量的示例代码和实践案例,...

    javascript面向对象要点总结

    ### JavaScript面向对象要点总结 在JavaScript中,面向对象编程(OOP)是一种广泛采用的编程范式,它允许开发者创建可重用、模块化的代码。本文将深入探讨JavaScript面向对象的关键概念,包括构造函数、原型链、...

    JAVASCRIPT 面向对象编程精要

    本文介绍了JavaScript面向对象编程的基本概念和技术细节,包括变量和对象的基础用法、函数的作用以及如何通过封装和继承来构建复杂的对象层次结构。JavaScript的独特之处在于它的灵活性和动态性,这使得它成为了一种...

    javascript面向对象编程(中文).pdf

    #### 二、面向对象的JavaScript基础 - **面向对象的概念**:面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。在JavaScript中,对象是一组相关的属性和方法的集合。 - **JavaScript与OOP**:虽然...

    包含javascript的基础语法,面向对象的实现和设计模式实现.zip

    包含javascript的基础语法,面向对象的实现和设计模式实现Javascript 代码其中很多都是伪代码的写法,便有回顾和总结。参考资料包含javascript的基础面向对象的实现设计模式实现语法开javascript常见的问题...

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

    《JavaScript面向对象精要》这本书不仅介绍了JavaScript面向对象的基础概念,还深入探讨了其实现机制及其在实际开发中的应用。对于希望提高自己JavaScript技能水平的开发者来说,本书是一本不可多得的好书。通过学习...

    javascript基础-->中级-->高级-->面向对象

    总结,JavaScript从基础到高级,再到面向对象的深入学习,对于任何参与Web建设的IT人员来说都是至关重要的。理解并熟练运用这些知识点,能够帮助开发者编写出更高效、更健壮的代码,以应对复杂的Web开发需求。

    JavaScript面向对象编程指南.pdf

    ### JavaScript面向对象编程指南 #### 一、面向对象编程(OOP)简介 ...无论是初学者还是有经验的开发者,在掌握JavaScript的基础之后,都应该进一步了解和实践面向对象编程,以提高代码质量和可维护性。

    javascript面向对象编程pdf

    总结来说,JavaScript面向对象编程涵盖了从基本原理到实现细节的多个方面,包括但不限于对象、构造函数、原型链、继承以及封装等。本书系统地介绍了这些知识点,并通过实例演示了如何在现代JavaScript中实现OOP,...

    [推荐]javascript 面向对象技术基础教程

    总结来说,JavaScript的面向对象技术包括对象的创建、属性访问、数组操作、函数的使用、构造函数以及原型链。理解这些基础概念,对于编写复杂的JavaScript应用程序至关重要。通过不断地实践和学习,你将能更好地掌握...

    JavaScript中支持面向对象的基础[参照].pdf

    总结来说,JavaScript中的面向对象特性包括使用函数定义类,通过`new`操作符实例化类,以及使用点运算符或方括号运算符访问对象的属性和方法。这些基础概念对于理解和使用JavaScript进行软件开发至关重要。

    JavaScript面向对象编程

    ### JavaScript面向对象编程详解 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming, OOP)是一...通过深入理解和掌握这些基础知识,开发者可以更加高效地使用JavaScript进行面向对象的编程。

    JavaScript面向对象编程指南 第2版 高清 带索引书签目录_样章.pdf

    从所提供的文件信息中,我们可以总结以下几点与“JavaScript面向对象编程指南 第2版 高清 带索引书签目录_样章.pdf”相关的重要知识点。 首先,该文件提到的书籍是关于JavaScript面向对象编程的,面向对象编程...

    Javascript 面向对象编程小结

    首先,面向对象编程的基础是类与对象。在JavaScript中,虽然没有像Java或C++那样的传统类机制,但是可以通过构造函数和原型来模拟类的行为。构造函数用于初始化新创建的对象,而原型则提供了继承和共享属性的机制。...

    面向对象Javascript核心支持代码分享

    总结来说,面向对象JavaScript核心支持代码分享这一概念涵盖了在JavaScript中模拟面向对象特性所必须的一系列基础技术。这些技术包括动态资源加载、浏览器兼容性检测,以及模拟类行为的封装方法,它们构成了...

    javascript 面向对象教程

    总结来说,JavaScript的面向对象特性包括基于原型的继承、动态类型以及函数作为一等公民。理解这些特性对于编写高效、可维护的JavaScript代码至关重要。同时,`undefined`的处理以及类型系统的理解也是JavaScript...

    JavaScript面向对象编程指南

    在探讨《JavaScript面向对象编程指南》这一主题时,我们不仅会深入分析面向对象编程(OOP)的基本概念,还会结合JavaScript这种脚本语言的特点,详细阐述如何在实际开发中有效地运用面向对象思想。以下是对该指南核心...

    javascript 面向对象编程.pdf javascript 设计模式与开发实践.pdf

    面向对象编程(Object-Oriented Programming, OOP)是JavaScript中的核心概念,而设计模式则是解决常见编程问题的经验总结,对于提升代码质量和可维护性至关重要。这两本书——"JavaScript 面向对象编程.pdf"和...

Global site tag (gtag.js) - Google Analytics