名站网址导航为大家提供关于网站网页设计设计相关的的教程知识。
- 本篇文章具体介绍如下
从一开始接触到js就感觉好灵活,每个人的写法都不一样,比如一个function就有N种写法
如:function showMsg(){},var showMsg=function(){},showMsg=function(){}
似乎没有什么区别,都是一样的嘛,真的是一样的吗,大家看看下面的例子
具体代码如下:
///-----------------------------------------------------------------------------------------
-------
//函数定义:命名函数(声明式),匿名函数(引用式)
//声明式,定义具体代码先于函数执行具体代码被解析
function t1(){
dwn("t1");
}
t1();
function t1(){
dwn("new t1");
}
t1();
//引用式,在函数运行中进行动态解析
var t1=function(){
dwn("new new t1");
}
t1();
var t1=function(){
dwn("new new new t1");
}
t1();
//以上输出:new t1,new t1,new new t1,new new new t1
可能想着应该是输出t1,new t1,new newt1,new new new t1,结果却并不是这样,应该理解这句话:声明
式,定义具体代码先于函数执行具体代码被解析
如果深入一步,应该说是scope链问题,实际上前面两个方法等价于window.t1,可以理解为t1是window的
一个公有属性,被赋了两次值,以最后一次赋值为最终值
而后面两个方法,可以理解为是t1是个变量,第四个方法的var去掉之后的结果仍然不会改变
然而,当第四个方法改成function t1(){}这样的声明式时,结果变成了new new new t1,new new new
t1,new new t1,new new t1
前面两个按照我的理解可以很好的理解为什么是这个答案,第三个也可以理解,但是最后一个输出让我比
较纠结,希望有高手出现解答一下
另外匿名函数还有(function(){...})()这样的写法,最后一个括号用于参数输入
还有var t1=new function(){..}这样的声明,实际上t1已经是一个对象了
例:
具体代码如下:
var t2 = new function()
{
var temp = 100; //私有成员
this.temp = 200; //公有成员,这两个概念会在第三点以后展开说明
return temp this.temp;
}
alert(typeof(t2)); //object
alert(t2.constructor()); //300
除此之外,还有使用系统内置函数对象来构建一个函数,例:
var t3 = new Function('var temp = 100; this.temp = 200; return temp this.temp;'); //这个位置加不加new结果都一样,WhY
alert(typeof(t3)); //function
alert(t3()); //300
二,创建对象
首先我们理解一下面向对象编程(Object-Oriented Programming,OOP),使用OOP技术,常常要使用许多
具体代码模块,每个模块都提供特定的功能,每个模块都是孤立的,甚至与其它模块完全独立
。这种模块化编程方法提供了非常大的多样性,大大增加了具体代码的重用机会。可以举例进一步说明这个问
题,假定计算机上的一个高性能应用程序是一辆一流赛车。如果使用传统的编程技巧,这辆赛车就是
一个单元。如果要改进该车,就必须替换整个单元,把它送回厂商,让汽车专家升级它,或者购买一个新
车。如果使用OOP技术,就只需从厂商处购买新的引擎,自己按照说明替换它,而不必用钢锯切割车体。
不过大部分的论点是,javascript并不是直接的面向对象的语言,但是通过模拟可以做到很多面向对象语
言才能做到的事,如继承,多态,封装,javascript都能干(没有做不到,只是想不到)
具体代码如下:
///-----------------------------------------------------------------------------------------
-------
//以下三种构造对象的方法
//new Object,实例化一个Object
var a=new Object();
a.x=1,a.y=2;
//对象直接量
var b={x:1,y:2};
//定义类型
function Point(x,y){ //类似于C#中的类
this.x=x;
this.y=y;
}
var p=new Point(1,2); //实例化类
第一种方法通过构造基本对象直接添加属性的方法来实现,第二种和第一种差不多,可以看成是第一种方
法的快捷表示法
第三种方法中,可以以”类“为基础,创造多个类型相同的对象
三,对象属性的封装(公有和私有)
以例子来说明
function List(){
var m_elements=[]; //私有成员,在对象外无法访问,如果此处无var声明,则m_elements将变成全局变
量,这样外部是可以直接访问到的,如alert(m_elements[0])
具体代码如下:
m_elements=Array.apply(m_elements,arguments);
//此处模拟getter,使用时alist.length;
//等价于getName()方式:this.length=function(){return m_elements.length;},使用时
alist.length();
//公有属性,可以通过"."运算符或下标来访问
this.length={
valueOf:function(){
return m_elements.length;
},
toString:function(){
return m_elements.length;
}
}
//公有方法,此方法使用得alert(alist)相当于alert(alist.toString())
this.toString=function(){
return m_elements.toString();
}
//公有方法
this.add=function(){
m_elements.push.apply(m_elements,arguments);
}
//私有方法如下形式,这里涉及到了闭包的概念,接下来继续说明
//var add=function()或function add()
//{
//m_elements.push.apply(m_elements,arguments);
/
相关文档推荐
jquery on事件jquery on实现绑定多个事件 js正则表达式 超轻量级的基于jquery的三级展开列表-jquery CSS:用overflow代替left截取指定长度字符串 很棒的学习jQuery的12个网站推荐-jquery 符合WEB标准的网站网页设计图像的具体代码精简 JavaScript EasyPager 分页函数-javascript技巧 让XhTML元素的命名规则更加合理 CSS网站网页设计布局强制换行和强制不换行的属性讲解 CSS教程:网站网页设计字体的设置和控制 简单掌握CSS3将文字描边及填充文字颜色的方法 使用jquery实现select添加实现后台权限添加的效果-jquery CSS网站布局技巧几则总结 CSS教程:网站网页设计英文字体和中文字体应用 jQuery版Tab标签切换-jquery精品模板推荐
推荐Dedecms蓝色大气博客网站模板
2014-07-18 301 8金币下载
推荐餐饮连锁店咖啡厅饮料品牌公司企
2016-12-06 412 70金币下载
推荐高端炫酷网络公司建站工作室织梦
2017-07-28 508 200金币下载
魔术工作室dedecms织梦网站源码
2016-03-23 157 10金币下载
响应式自适应企业通用类网站织梦
建筑智能化软件研发系统类织梦模
宠物狗机构类网站织梦模板(带手机端) 门锁类织梦网站模板带手机网站 红色高端大气婚纱摄影织梦网站 带手机WAP站同步PC站数据 鲜花产品展示网站类织梦模板(带手机端) 高端科技类企业通用织梦网站源码 响应式自适应医疗美容整形机构企业网站织梦模板 宽屏dedecms装修设计家装软装别墅装修网站 工商企业管理代理记账注册公司dedecms网站源码 电线电缆设备辅助材料类网站织梦模板带手机端 响应式新材料类网站织梦dedecms模板(中英双语自适应版) 织梦红色按摩中心网站模板 织梦贼牛搞笑网站源码_dedecms搞笑类网站源码 美甲美容美发化妆培训机构学校企业织梦模板 四通政府整站,极品dedecms源码 响应式监控类电子科技设备网站织梦模板(自适应各类移动设备)专业的织梦模板定制下载站,在线购买后即可下载!
商业源码好了关于网站网页设计设计相关的这篇文章就给大家介绍到这里不明白的地方给本站留言。声明,本站内容来源于互联网,如果侵犯了你的权益请联系本站删除。,Javascript闭包演示具体代码小结-javascript技巧