今天碰巧在网上看了一篇关于介绍创建js对像的文章,读后才发觉以前所了解的js又开始陌生了,剩下的关于prototype.js的介绍,只是粗略的浏览了一下,明天再继续认真拜读
以下是文章的url http://hi.baidu.com/lovevc2008/blog/item/4bd2a9dcdfbc4d325882dd96.html
看后可能各位看官应该知道我写这个文章的目的吧
/* //Class 声明方式 -- 创建object -- start var Class = { create : function() { //返回构造函数 return function() { //声明构造函数 this.initialize.apply(this,arguments); } } } var person = Class.create(); person.prototype = { //必须重写initialize方法,作为该类的构造器 initialize : function(name) { this.name = name; }, showMyName : function() { alert(this.name); } } var personObj = new person("我是啊杰"); personObj.showMyName(); //Class 声明方式 -- 创建object -- end */ /* //匿名声明方式 -- 创建object -- start var person = function(name) { this.name = name } person.prototype = { showMyName : function() { alert(this.name); } } new person("叼你老屎").showMyName(); //匿名声明方式 -- 创建object -- end */ /* //函数声明方式 -- 创建object -- start function person(name) { this.name = name; this.showMyName = function() { alert(name); } } //函数声明方式 -- 创建object -- end new person("叼你老屎").showMyName(); */ /* //prototype.js声明方式 -- 创建object -- start var person = { name : '靓仔', showMyFirendName : function() { alert(this.name); } } //prototype.js声明方式 -- 创建object -- end //要注意prototype.js声明方式,它不用new就可以直接拿来使用,给我感觉像static person.showMyFirendName(); */
//主要测试self,this关键字 function getWord() { alert('叼你老屎!总稳你唔到!'); } //父类--start prototype 默认为null function obj1(num) { this.num = num } obj1.prototype = { say:function() { alert('叼你老屎啊,我是你老豆啊!敢重新编我讲的话!'); } } //父类--end //子类--start function obj2(str) { this.str = str; } var o1 = new obj1(3); obj2.prototype = o1; /* //可以在重写prototype的say方法,但是不会对定义子类时定义say方法产生影响,其它重写全部影响 obj2.prototype.say = function (){ alert('老豆编下你D话姐,唔会对你有影响架,把口系我度,总有因为我是帅哥'); } */ //obj2.prototype.num = '8'; /* //可以在定义子类时,定义say方法,但是不会对实例化后o2重写的方法say,prototype链上的say方法产生影响 obj2.say = function () { alert("老豆我讲个D野应该无编你呱,因为我句话同你表达的野都唔同,总有因为我是靓女"); } */ //子类--end var o2 = new obj2('wenzj'); /* //可以在实例化后,重写say方法,但是重写的方法对父类,或prototype链中的所有属性不产生影响 o2.say = function () { alert('老豆编下你D话姐,唔会对你有影响架,把口系我度,总有因为我是帅哥'); } */ o2.num = 8; o1.say(); o2.say(); obj2.say(); alert(o1.num); alert(o2.num); /* 总结:js中的prototype相当于java的全局作用域 如 obj.prototype = {}; 凡是对像都有prototype,prototype从而形成环链表,环链表当遇到prototype为null的时,prototype链断开 形成prototype链中的属性和行为都是共享的,如果重写链中的某一属性或行为,相当于java中在子类里增加了的 同一属性或重写父类行为,java中父类的属性和行为都是不受子类的影响,但是js有个特殊地方就是当你通过prototype重写时,会对prototype链中的 所有同一属性或行为都是新增或重写后的,相当于父类和子类的所有属性和行为都一模一样 class obj {}中的‘{}’ */
其实今天也写了关于dwr方面的东东,程序简单,只是简单的dwr搭建,就不上传了