一、 起因 那天用到prototype.js于是打开看看,才看几行就满头雾水,原因是对js的面向对象不是很熟悉,于是百度+google了一把,最后终于算小有收获,写此纪念一下^_^。 prototype.js代码片段 复制代码 代码如下: var Class = { create: function() { return function() { this.initialize.apply(this , arguments); } } } // Class使用方法如下 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 的有什么相同与不同? 看代码: 复制代码 代码如下: var ClassName = function(v){ this.value=v; this.getValue=function(){ return this.value; } this.setValue=function(v){ this.value=v; } }
那么JS中的函数和类有什么不同呢? 其实是一样的,ClassName就是一个函数,当出现在new后面的时候就作为一个构造函数来构造对象。 如 复制代码 代码如下: var objectName1 = new ClassName(“a”);//得到一个对象