JS 面向对象、prototype、call()、apply() 收藏 一、 起因 那天用到 prototype.js 于是打开看看,才看几行就满头雾水,原因是对js 的面向对象不是很熟悉,于是百度+google 了一把,最后终于算小有收获,写此纪念一下^_^。 prototype.js 代码片段 view plaincopy to clipboardprint? var Class = { create: function() { return function() { this.initialize.apply(this , arguments); } } } var Class = { create: function() { return function() { this.initialize.apply(this , arguments); } } } // Class 使用方法如下 view plaincopy to clipboardprint? var A = Class.create(); A. prototype={ initialize:function(v){ this .value=v; } showValue:function(){ alert(this.value); } } var a = new A(‘helloWord!’); a. showValue();//弹出对话框 helloWord! var A = Class.create(); A. prototype={ initialize:function(v){ this .value=v; } showValue:function(){ alert(this.value); } } var a = new A(‘helloWord!’); a. showValue();//弹出对话框helloWord! l initialize 是什么? l apply 方法是干什么的? l arguments 变量呢? l 为什么new A 后就会执行initialize 方法? 寻找答案: 二、 Js 的面向对象 initialize 是什么? 只不过是个变量,代表一个方法,用途是类的构造函数。 其具体功能靠 js 的面向对象支持,那么js 的面向对象是什么样子的那?和 java 的有什么相同与不同? 看代码: view plaincopy to clipboardprint? var ClassName = function(v){ this.value=v; this.getValue=function(){ return this.value; } this.setValue=function(v){ this.value=v; } } var ClassName = function(v){ this.value=v; this.getValue=function(){ return this.value; } this.setValue=function(v){ this.value=v; } } 那么JS 中的函数和类有什么不同呢? 其实是一样的,ClassName 就是一个函数,当出现在new 后面的时候就作为一个构造函数来构造对象。 如 view plaincopy to clipboardprint? var objectName1 = new ClassName(“a”);//得到一个对象 var objectName1 = new ClassName(“a”);//得到一个对象 其中objectName1 就是...