论述javascript,论述类文本阅读
简述一个JavaScript脚本的基本结构
我不知道你还学过其它什么语言,如果学过,可以进行类比
创新互联是网站建设技术企业,为成都企业提供专业的网站制作、做网站,网站设计,网站制作,网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制适合企业的网站。10多年品质,值得信赖!
JAVASCRIPT作为一种脚本语言,可以说非常强大。
我感觉它是属于C系统的语言:
1、数据类型
2、基本语法
3、流程控制
4、API
5、高级特性(闭包、面向对象)
JavaScript原型,原型链 有什么特点
1.1 一切皆为对象
JavaScript里所有的东西都是对象. 对象是属性的集合. 数字, 字符串, 布尔值等原始值是"伪对象", 它们同样拥有属性, 但是是在栈上分配并按值传递. 而其他的对象是堆上分配并按引用传递.
一个很重要的概念是, 函数也是对象, 能够作为变量的值, 返回值, 参数或者属性的值. 函数对象特殊的地方是能通过"xxx()"语法执行包含在xxx函数对象内的代码. 因为这一特殊性, typeof xxx 将会返回function, 但这只是一种便利设施.
1.2 对象的属性可以动态添加和删除
var foo = new Object();
// 为foo对象添加bar属性
foo.bar = "foobar";
alert(foo.bar); //foobar
// 删除foo对象的bar属性
delete foo.bar;
alert(foo.bar); //undefined
1.3 除了宿主对象, 其它对象皆由构造函数创建
要有对象, 就先要有创建对象的方法.
在C++/Java等语言, 这个方法就是实例化XXX类的一个实例xxx.
而在JavaScript的世界里实际没有类的东西, 当然仍然可以用"类"和"实例"等惯用语来描述JavaScript中类似的行为, 但其机制是完全不同的. JavaScript的对象是由构造函数创建的, 每个对象都有constructor属性表示创建该对象的构造函数:
function Test() { this.a = "hello"; }
var test = new Test(); // 由Test构造函数创建
alert(test.constructor);
var o = { a: "hello" };
//实际相当于
var o_ = new Object();
o_.a = "hello"; // 由Object构造函数创建
alert(o.constructor);
构造函数也是对象, 那构造函数是由什么创建? 内建的Function函数:
function Test(a, b)
{
alert(a+b);
}
// 相当于:
Test = new Function(["a", "b"], "alert(a+b);");
Function函数又是由什么创建? 实际上Function是本机代码实现的固有对象. 不过为了一致性, Function也有constructor属性, 该属性指向它自己. 接上面的代码:
/* 输出 function Function(){
[native code]
}
*/
alert(Test.constructor);
alert(Test.constructor.constructor === Test.constructor); // true
alert(Test.constructor === Object.constructor); // true
2 原型prototype
2.1 prototype的概念
prototype是构造函数的一个属性, 该属性指向一个对象. 而这个对象将作为该构造函数所创建的所有实例的基引用(base reference), 可以把对象的基引用想像成一个自动创建的隐藏属性. 当访问对象的一个属性时, 首先查找对象本身, 找到则返回; 若不, 则查找基引用指向的对象的属性(如果还找不到实际上还会沿着原型链向上查找, 直至到根). 只要没有被覆盖的话, 对象原型的属性就能在所有的实例中找到.
原型默认为Object的新实例, 由于仍是对象, 故可以给该对象添加新的属性:
// prototype默认为new Object(); 为了方便, 记为p_obj
function Person(name) {
this.name = name;
}
// 为 p_obj 增加 sayName 属性
Person.prototype.sayName = function(){
alert(this.name);
}
var john = new Person("John"); // john 的 base reference指向p_obj
var eric = new Person("Eric"); // eric 的 base reference也是指向p_obj
// 注意sayName代码中的this将指向实例化后的对象(this绑定)
john.sayName(); // john对象本身没有sayName属性, 于是访问原型对象p_obj的sayName属性
eric.sayName(); // 访问同一个原型对象p_obj的sayName属性
var tmp = Person.prototype;
tmp.boss = "David";
// 于这个运行点, p_obj已经被修改
// 根据上述属性访问流程, 新的修改(boss属性)能反映到所有的实例, 包括已经创建和即将创建的
alert("John's boss is " + john.boss);
alert("Eric's boss is " + eric.boss);
// hisCar和sayCar属性将增加到john对象而不是p_obj对象..
john.hisCar = "Audi";
john.sayCar = function(){
alert(this.name + " has a car of " + this.hisCar);
}
john.sayCar();
// ..因此下一句将错误, 因为eric对象本身和原型p_obj都没有sayName属性
/* eric.sayCar(); */
2.2 原型链
除了能修改prototype指向的对象, 还能修改prototype指向哪一个对象, 即为prototype赋予一个不同的对象. 这可以实现一种简单的继承:
function Superman() {}
Superman.prototype.sayHello = function(){
alert("I'm a superman.");
}
function SupermanCan(skill){
this.skill = skill;
}
// 为prototype赋予Superman的实例..
SupermanCan.prototype = new Superman();
// ..再动态添加新的属性
SupermanCan.prototype.sayMore = function(){
this.sayHello(); // 调用"父类"的方法
alert("I can " + this.skill);
}
var david = new SupermanCan("fly");
// output: I'm a superman. I can fly
david.sayMore();
如果先实例化出一个对象, 再为构造函数prototype赋予一个不同的对象, 将会: 已经创建的对象的基引用不变, 将来创建的对象的基引用为新的原型对象:
var f1 = {echo: function() { alert("sound"); } };
function Foo() {};
var foo = new Foo(); // foo的基引用指向Object实例
Foo.prototype = f1;
/* 未定义, 因为这是"foo对象自己或者基引用指向的对象有echo属性吗?"
而不是"foo对象自己或者Foo.prototype指向的对象有echo属性吗?" */
alert(foo.echo);
var foo2 = new Foo(); // foo2的基引用指f1对象
foo2.echo(); // output: sound
所有的构造函数的prototype都不能为空, 就是说Superman.prototype = null 会被解释引擎无视; 另一方面, Object构造函数也有prototype属性(该属性是只读的, 可以为原型增加属性,但不能赋予不同的对象), 故因此可以有多层的原型链, 但原型链的根必定会是Object.prototype . 这意味着给Object.prototype增加属性影响到所有对象:
Object.prototype.echo = function() {
alert("hello");
}
// echo属性将增加到所有对象固有对象和自定义对象
var arr = new Array();
arr.echo();
Array.echo();
function ObjCons() {
this.dummy = "d";
}
var obj = new ObjCons();
obj.echo();
ObjCons.echo();
3. 构造函数和new的实质
构造函数是一个地地道道的函数, 一个函数之所以能成为构造函数, 是因为new运算符:
this.msg = "window";
function Test()
{
alert(this.msg);
}
Test(); // window
var test = new Test(); // undefined. 因为test对象没有定义msg属性
二者区别在于如何切入对象: Test() 在某个对象(例子中为window)的上下文上执行代码, 即this指向这个对象; new Test()创建一个新对象, 并以这个新的对象为上下文(this指向新对象)执行代码, 然后返回这个新对象.
假如有个函数:
function Test() {
var dummy = "have money";
this.wish = dummy;
doSomeThing();
}
结合以上的所有论述, 可以推测new Test()行为的伪代码表示为:
创建一个新对象temp;
temp.constructor = Test;
temp.(base reference) = Test.prototype; // 这一句先于代码体执行, 意味着构造函数里的this.xxx能访问原型对象的属性xxx
bind: this = temp; // 将this绑定到temp对象
// 开始执行函数代码
var dummy = "have money";
this.wish = dummy; // 为temp对象添加wish属性
doSomeThing();
....
// 结束执行函数代码
return temp;
这个未必会符合内部的二进制实现, 但却能很好地解释了JavaScript的特性.
哪本教程是以javascript脚本语言讲解asp动态网站开发的经典教材?
各位,网页设计又不是网站编程,还是我来介绍几本吧!
精美网页特效设计技巧精粹
网页制作、网页图像处理、网页动画设计以及各种实用的特效制作等的方法与技巧,涵盖了网页版式设计、色彩设计、网页图形创意、网页图标设计、网页动画设计、网页字体设计、网页特效设计等。几乎涉及到了与网页相关的方方面面,全书内容丰富、自成体系、实例众多。
动态网页设计培训教程 动态网页设计培训教程
网页设计软件的使用方法和最新的网页设计技术。全书共分14章,分别介绍了网页设计的基础知识;超文本标记语言HTML,使用FrontPage 2000和Dreamweaver 3.0设计网页的要领;使用Photoshop 6.0 和ImageReady 3.0优化和处理WEB图像等内容。
JavaScript 动态网页经典实例教程
网页设计实例,介绍动态网页设计中的常用方法、重点和难点。这些实例包括了动态状态栏,动态文本框,应用时间,动态层,动态内容,动态位置,动态元素内容,滚动效果,动态页面导航,动态数据表单,动态表格等内容。读者对象该书适合于广大的网页设计从业人员,为动态网页开发设计中需要解决的实际问题提供 ...
网页美术设计入行实战(全彩)(含光盘1张) 网页美术设计入行实战(全彩)(含光盘1张)
网页美术设计行业分析;就业指导;小型商业网页设计;大型商业网站设计;通过实际工作的案例以及虚拟应用场景,将每个案例的使用环境描述出来,涉及了网页设计在实际应用中使用的软件Flash,Dreameaver的使用,网页制作的技巧,并对一些陌生的或不常用的功能做了提示性的说明与解析。有多个实际案例供参考;网页设计的经验 ..
网上筑巢--循序渐进设计网页
网页.包括输入文字后设置格式,使网页内容更加鲜明,增加图片使网页更加生动,增加声音让网页学会"说话"等.此外还介绍网页制作高手的很多决窍.本书的读者对象是准备上网或已经上网,但上网经验不足的初学者.
如果你真的想学习编程,那下面这些书是比不可少的。
JavaScript基础与实践教程
本书在介绍JavaScript相关知识的基础上,主要结合实例讲解JavaScript的实际应用。内容主要包括JavaScript语言的语法、 JavaScript面向对象的特性、调试JavaScript、JavaScript结合CSS应用于WEB编程、JavaScript的Dom编程、 JavaScript的基础应用、服务器端的应用、通过综合实例介绍JavaScript的高级应用。
边学边用JAVASCRIPT
JAVASCRIPT是实现网页动态性、交互性的脚本语言。本书通俗易懂,按照循序渐进的方法详细介绍了JAVASCRIPT的基本概念, HTML基本知识、JAVASCRIPT的基本语法及其内置对象和浏览器对象。书中对于每个知识点都配备了相应的实例,帮助读者加深理解。本书适合为 JAVASCRIPT初学者的培训教材,也可以作为中、高级网页编程 ...
网页样式设计――CSS使用详解 网页样式设计――CSS使用详解
CSS的基本概念、CSS属性、格式化模型以CSS单位等。此外,对于CSS的延伸扩展部分也做了全面的介绍,包括CSS定位技术、打印支持、框架结构、声音CSS滤镜变换效果等。书中附有大量实用例子帮助读者掌握和编写样式表单文档。本书内容翔实,深入浅出,是网络开发人员和网络爱好者的理想参考书。
网页制作全接触――HTML 4.0 CSS 网页制作全接触――HTML 4.0 CSS
CSS的内容,包括HTML 4.0各个标记的语法和属性,CSS各上属性的语法和属性值,同时介绍了两者在Dreamweaver中的实现,提供大量灵活使用HTML 4.0和CSS制作动态网页的实例。本书第一部分是590811及其应用,第二部分是CSS及其应用,附录中了JavaScript参考手册、CSS兼容性列表和字符实体集。
网页设计与制作――MX 2004(第2版)
网页制作套装软件Macromedia Studio MX2004中的网页制作三剑客为主要内容,介绍客户端网页的制作。全书共分9章,第1章网页制作基础,介绍与网页制作有关的基础知识;第2章至第5章介绍Dreamweaver MX2004的使用,其中穿插介绍CSS、JavaScript在网页中的应用;第6章和第7章介绍Fireworks MX2004的使用;第8章和第9章介绍F ...
精通ASP网络编程
ASP网络编程技术的实用教程。书中举例大量典型实用,综合了众多ASP程序员的实际开发经验。本书适合广大网络设计和开发人员以及对ASP感兴趣的编程爱好者阅读。
ASP开发实例(1CD)
ASP进行Web开发。主要内容有:ASP基本对象的使用,在ASP中使用第三方或自制的ActiveX控件,数据库对象的使用和设计,SQL语句的使用等。本书内容由浅入深,论述深入、全面,实例覆盖了ASP编程的大部分内容,每个实例着重介绍一个或几个知识要点。此外,还附有源程序代码多媒体光盘,帮助ASP爱好者快速深入地掌握ASP编程? ...
高校计算机教程系列 JSP实用教程
JSP运行环境的配置、JSP语法、JSP内置对象、JSP与文件、JSP与数据库、JSP与JavaBrsnd等内容;第7章至第8章介绍了怎样使用JSP技术创建完整的网站。第9章讲述Java Servlet,针对JSP与servlet结合开发网站做了详细的介绍
JSP实用案例教程
JSP)程序设计技术。主要内容包括:B/S开发模式和主流技术介绍,JSP编程基础,在Windows 2000/XP和Linux环境下JSP运行环境的配置过程,HTML与JSP的交互过程,JSP中的页面元素,编译指令和操作指令,JSP中常用的对象,JDBC,JavaBean,JSP的综合应用举例,Servlet的概念和使用,如何在JSP中应用XML,JSP的高级应用以及? ...
PHP与MySQL5程序设计(第2版)
PHP脚本语言和MySQL数据库这两种目前最流行的开源软件,主要内容包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、 PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、触发器和视图等。本书实用性强,帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何结合这些卓越的技术创建数据库驱动的 ...
想做一个毕业设计,主要语言为Javascript,有什么好的提议莫
第一,可以体现作者的总体思路。提纲是由序码和文字组成的一种逻辑图表,是帮助作者考虑文章全篇逻辑构成的写作设计图。其优点在于,使作者易于掌握论文结构的全局,层次清楚,重点明确,简明扼要,一目了然。[2]
第二,有利于论文前后呼应。有一个提纲,可以帮助我们树立全局观念,从整体出发,在检验每一个部分所占的地位、所起的作用,相互间是否有逻辑联系,每部分所占的篇幅与其在全局中的地位和作用是否相称,各个部分之间的比例是否恰当和谐,每一字、每一句、每一段、每一部分是否都为全局所需要,是否都丝丝入扣、相互配合,成为整体的有机组成部分,都能为展开论题服务。经过这样的考虑和编写,论文的结构才能统一而完整,很好地为表达论文的内容服务。
第三,有利于及时调整,避免大返工。在毕业论文的研究和写作过程中,作者的思维活动是非常活跃的,一些不起眼的材料,从表面看来不相关的材料,经过熟悉和深思,常常会产生新的联想或新的观点,如果不认真编写提纲,动起笔来就会被这种现象所干扰,不得不停下笔来重新思考,甚至推翻已写的从头来过;这样,不仅增加了工作量,也会极大地影响写作情绪。毕业论文提纲犹如工程的蓝图,只要动笔前把提纲考虑得周到严谨,多花点时间和力气,搞得扎实一些,就能形成一个层次清楚、逻辑严密的论文框架,从而避免许多不必要的返工。另外,初写论文的学生,如果把自己的思路先写成提纲,再去请教他人,人家一看能懂,较易提出一些修改补充的意见,便于自己得到有效的指导。
9相关范例
编辑
在毕业论文的写作过程中,指导教师一般都要求学生编写提纲。从写作程序上讲,它是作者动笔行文前的必要准备;从提纲本身来讲,它是作者构思谋篇的具体体现。所谓构思谋篇,就是组织设计毕业论文的篇章结构。因为毕业论文的写作不像写一首短诗、一篇散文、一段札记那样随感而发,信手拈来,用一则材料、几段短语就表达一种思想、一种感情;而是要用大量的资料,较多的层次,严密的推理来展开论述,从各个方面来阐述理由、论证自己的观点。因此,构思谋篇就显得非常重要,于是必须编制写作提纲,以便有条理地安排材料、展开论证。有了一个好的提纲,就能纲举目张,提纲挚领,掌握全篇论文的基本骨架,使论文的结构完整统一;就能分清层次,明确重点,周密地谋篇布局,使总论点和分论点有机地统一起来;也就能够按照各部分的要求安排、组织、利用资料,决定取舍,最大限度地发挥资料的作用。
有些学生不大愿意写提纲,喜欢直接写初稿。如果不是在头脑中已把全文的提纲想好,如果心中对于全文的论点、论据和论证步骤还是混乱的,那么编写一个提纲是十分必要的,是大有好处的,其好处至少有如下三个方面:
第一,可以体现作者的总体思路。提纲是由序码和文字组成的一种逻辑图表,是帮助作者考虑文章全篇逻辑构成的写作设计图。其优点在于,使作者易于掌握论文结构的全局,层次清楚,重点明确,简明扼要,一目了然。
第二,有利于论文前后呼应。有一个提纲,可以帮助我们树立全局观念,从整体出发,在检验每一个部分所占的地位、所起的作用,相互间是否有逻辑联系,每部分所占的篇幅与其在全局中的地位和作用是否相称,各个部分之间的比例是否恰当和谐,每一字、每一句、每一段、每一部分是否都为全局所需要,是否都丝丝入扣、相互配合,成为整体的有机组成部分,都能为展开论题服务。经过这样的考虑和编写,论文的结构才能统一而完整,很好地为表达论文的内容服务。
第三,有利于及时调整,避免大返工。在毕业论文的研究和写作过程中,作者的思维活动是非常活跃的,一些不起眼的材料,从表面看来不相关的材料,经过熟悉和深思,常常会产生新的联想或新的观点,如果不认真编写提纲,动起笔来就会被这种现象所干扰,不得不停下笔来重新思考,甚至推翻已写的从头来过;这样,不仅增加了工作量,也会极大地影响写作情绪。毕业论文提纲犹如工程的蓝图,只要动笔前把提纲考虑得周到严谨,多花点时间和力气,搞得扎实一些,就能形成一个层次清楚、逻辑严密的论文框架,从而避免许多不必要的返工。另外,初写论文的学生,如果把自己的思路先写成提纲,再去请教他人,人家一看能懂,较易提出一些修改补充的意见,便于自己得到有效的指导。
简单提纲举例
以《关于培育和完善建筑劳动力市场的思考》为例,简单提纲可以写成下面这样:
一、序论
二、本论
(一)培育建筑劳动力市场的前提条件
(二)目前建筑劳动力市场的基本现状
(三)培育和完善建筑劳动力市场的对策
三、结论
JavaScript中基本数据类型和引用数据类型的区别
存储不一样,引用可以看成存储的指针,主要是array,object这样的对象是引用。
var arr1=[123,456];
var arr2 = arr1;
arr2.push(888);
arr1.push(999);
结果,同一数组数组都会被修改:
for(var i=0;i arr1.length;i++) {
console.log(arr1[i]+"\t");
}
console.log("\n");
for(var i=0;i arr2.length;i++) {
console.log(arr2[i]+"\t");
}
两个数组输出一样,这就是所谓的应用,引用归结下来就是,存放实际值得地方相同。变量仅仅代表了地址指针。举一反三,对象也是一样的道理。
至于普通变量,用到后就会在静态存储区分配空间(全局)或者栈上分配存储空间(函数中)。
var bb =2;
var aa =bb;
这块给bb分配一个存储空间放2,再给bb分配一个存储空间放2,理解上存储的内容是值复制。
代码真正执行的时候 bb aa 函数名这些变量也需要空间存储,编译类型的代码会把他给弄成指针(这个表述跟真的指针类型有区别,我看过的书籍中没先关论述,先就这么理解),js解释性的语言,由解释器负责分配。
我给你讲得这个东西,应该是没错。因为js是解释性语言,他的解释器,比如浏览器,node.js都是c/c++写的。
[img]文章题目:论述javascript,论述类文本阅读
网页链接:http://cdiso.cn/article/dsopije.html