玩了flex 5年,一直都用它做界面,由于主要是做企业后台界面,还不错。
但是:flex开发工具需要注册码 配置繁琐,在看过同事用html5做出很炫的界面后,我决定学学html5做界面
javascript学了两天了,感觉还是有很多新东西,特别是面向对象这一块,有点费解,记下来,分享一下。javascript是面向对象的
一、进行javascript 面向对象编程,其要素很简单,就是两个要素 :{} 、[]
{}就是javascript的对象表示,javascript中没有类的概念,就是用 {} 直接实例出一个对象
var myobj = {};
[] 表示数组,其实数组也是对象,但是我们要在心里有 “对象” 和 “数组” 这两个概念,个人感觉会清晰一些。
二、javascript的世界,都是对象
var obj; obj就是一个对象了,感觉javascript定义一个对象很随意:
var obj ; var obj = {}; var obj=[] ; var obj = function(){}; function obj(){}; 注意 函数也是对象,函数就是{}
下面是一个复杂点实例,同JSON语法
var dd = { "name":"dd",
"setName":function(name){ this.name = name; } ,
"list":[{},{}]
};
三、this 引用,new关键字
this这个关键字指向的是当前对象,看代码
var cc = {"name":"xiao li"};//定义cc对象
alert(window.cc.name);
alert(this.cc.name) ; //和上一句结果一样,说明this指向window,说明当前对象就是window
注意:window就代表可视化的页面窗口,可理解为就是页面。我们可以把它当作顶层对象。接着看new和this的代码
function myObj(){
this.name="名字"; //this指向当前对象
this.setName = function(name){
this.name = name;
};
}
var obj1 = new myObj(); //myobj是一个对象,new 语句让myobj复制了一个新的对象,并赋值给了obj1
obj1.setName("小李"); //
var obj2 = new myObj(); // obj2就是一个全新的myObj,obj2中的this当然指向obj2啦 (上面的obj1当然一样)
obj2.setName("大李");
四、函数充当构造子,()充当“main”,...静态函数
function myobj(name,age){
this.name = name;
this.age = age;
this.setAge = function(age){
this.age= age;
staticfun(this.name);
}
(function main(){ alert("fff"); })(); //我们用()当main函数
function staticfun(name){ //没有把函数指向this内部的任何一个变量,他相当于一个静态函数,
//javascript没有类的概念,不能调用 myobj.staticfun("name")。
alert(name);
}
}
var obj1 = new myobj(); //函数充当构造子,有点像java了,
体会:javascript已经对象化了,我们就要把所有的事物都当成对象,应用面向对象的思想写代码。另外,javascript编程的方式与java不同,我觉得他是一种“面向实例的编程”方式,比java代码更加的简洁,以下代码诠释了这一点。
var obj = {};
obj.name = "dddd";
obj.fun = function(x){alert(x)};
obj.fun("xxx");