Javascript
在
web
应用开发使用非常的频繁,它可以轻易帮助我们实现数据验证,完成特殊效果或动作。今天我们就来谈谈
Javascript
的一些事。
JavaScript
对象
看到“对象”二字,听惯面向对象编程的你,是否第一感觉是要有个类,然后进行实例化生成一个对象?
Javascript
恰恰相反,它没有
“类”的概念。分“类”有助于我们理解和使用东西,但是在我们享受这些福利的同时“类”也限制了我们的思想,编程应该是自由的,
Javascript
抛弃了类的概念,从而也解放了我们。接下来我们看一下
Javascript
是怎么海阔天空的。
示例一:
var testObj = {};
testObj.name = "testObj";
//testObj.name.firstName = "a"; //简单数据类型不是对象,所以不能给它加属性
testObj.remark = "您可以给我随便加属性";
……
alert(testObj.name);
alert(testObj.remark);
示例中我首先创建了一个对象
testObj
,
一开始它里面什么都没有,空的,什么都不能做,然后我给它加了一个名字属性,再给它加了个备注属性,它开始成为一个“具体”的东西了(当然你还可以给它加
方法),之后你就可以使用这里面的这些属性和方法了。如果你对这些属性和方法不满意,你还可以随时删除它们,或者新增其他的属性和方法。
示例二:
//
接示例一脚本
TestObj.say = function(){ //增加一个说话的方法
alert(“Hi!我可以说话了!”);
};
TestObj.name = undefined; //我不想让人知道我的名字,删掉这个属性
Javascript
的是可以随意删掉对象里的属性和方法的,删除方法很简单,就是把这个属性或方法置为
undefined
。
Javascript
中找不到某个对象或方法时就会提示你“
undefined
”(未定义),于是我们要删除对象的某个属性时就强制把它设置为
undefined
,就是告诉解析器这个属性我不要了,如果下面的脚本要使用它,就跟它们说没了。
也许你注意到示例一中的被注释掉的红色代码了,没错,我是想告诉你,简单数据类型(包括
string
、
number
、
null
、
boolean
、
undefined
)它们都不是对象,不能使用对象的这些特性。
函数(
function
)
函数有两种定义方式:定义式和变量式。
示例三:
function funcA(){
alert(“定义式!”);
}
var funcB = function(){
alert(“变量式!”);
}
这两种写法几乎等价的,细微的不同点在于定义式创建时函数会在脚本执行前就被声明了(后面讲
javascript
脚本执行方式会提及),我们可以在脚本的任何地方使用这个函数。变量式创建函数时则不行,如果我们在创建前使用这个函数,那是不可能成功的。
我们可以认为,
Javascript
的函数就是一个特殊的变量
,
变量类型
function
,变量名
: funcB
,变量值
:
函数代码体代码,这个变量的变量值可以执行的,同样,作为一个变量,它也是可以进行赋值的。
示例四:
var funcA = function (){
alert("funcA");
};
funcA();//输出funcA
funcA = function (){
alert("funcB");
};
funcA();//输出funcB
函数具有对象的全部特征。同样你可以对函数内部的属性进行增加删除。
示例五:
//
接示例四脚本
funcA.name = “funcA”; //我有名字了
alert(“大家好!我叫”+ funcA.name);
funcA.name = undefined; //我的名字被剥夺了!
Javascript支持重载吗?
Javascript是不支持重载的。
示例六:
function funcA(str1, str2){
alert(str1 + “ and ” + str2);
}
function funcA(str1){
alert(str);
}
funcA(“a”,”b”); //输出 a
funcA(“a”); //输出 a
在
Javascript
中后声明的函数会覆盖掉前面声明的函数,这里的第二个函数才是有效的,当你传两个参数时,第二个参数会被忽略掉。
如果你实在是想重载怎么办?那么我告诉你一种方法吧。
我称之为“伪重载”,其实这里连“伪”都谈不上,因为我们只是利用
javascript
函数的一个特性,在同一个函数上打主意,让人看起来这个函数被重载了一样。
Javascript
函数有个特性,他可以灵活的传递参数的个数。
示例七:
function func2(a,b,c){
alert("a+b="+(a+b));
if(c){
alert("a+b+c="+(a+b+c));
}
}
func2(1,2); //输出a+b=3
func2(1,2,3); //输出a+b+c=6
Javascript
脚本在执行时是不管函数定义时有多少个参数的,一切皆由你来控制。这是否能满足你的要求呢?
JavaScript
脚本执行方式
JavaScript
执行引擎并非一行一行地分析和执行程序,而是一段一段(
为一段)地分析执行的。而且,在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码,另外名称相同的函数后定义的函数会覆盖掉前面声明的函数。
示例八:
第一个
script
段中在第一次调用
func
之前,第一个函数语句定义的代码逻辑,已被第二个函数定义语句覆盖了。所以,两次都调用都是执行最后一个函数逻辑了,而第二个
script
段的
func
没受到影响。
Javascript
虽然是脚本型语言,简单、易用,但它还有很多特性或技巧还值得我们去深究,我们只有不断去发掘才会写出更优雅的代码来。
分享到:
相关推荐
通过对JX与Linux在两个非平凡的操作系统组件(文件系统和NFS服务器)上的性能进行对比,可以看出JX在单体配置下,在文件系统基准测试中的性能达到了Linux的大约40%到100%,而在NFS基准测试中的性能约为Linux的80%。...
对于尝试用JavaScript解决非平凡问题的程序员来说,如果没有对语言有足够的了解,可能会感到挫败。本书旨在提供全面深入的JavaScript学习资料,帮助读者建立深刻的理解。如果你习惯了简单的JavaScript教程,那么接...
JavaScript自动化是现代Web开发中的重要组成部分,它可以帮助开发者节省时间,提高工作效率,减少手动重复任务。这个名为"javascript-automation"的项目显然旨在利用JavaScript进行自动化工作,特别是针对本地构建...
【1030Love 平凡的叶子】是一款网页模板,专为个人或者小型企业设计,旨在提供一种简单而优雅的在线展示方式。这款模板以其独特的设计风格和易用性吸引了许多用户。在深入探讨这款模板之前,让我们先了解一下网页...
在这种情况下,特征向量也可以是复数,它们提供了更丰富的信息,可以揭示图的非平凡特性。 在教育和研究领域,这样的工具非常有价值,因为它们使非专业人员也能直观地理解抽象的数学概念。用户可以通过实际操作来...
具有链接的概念的词典索引 摘自资源HowProgrammingWorks 需要添加示例 目录: 基本概念 是一种概括,是从细节中抽象出来的,突出了本质,并切断了非本质的属性和连接。 抽象-抽象或模型的构建,可以提高算法和数据...
在“商业编程-源码-平凡人的日记本.zip”这个压缩包中,我们可以推测它包含的是与商业编程相关的源代码,可能是一个项目或者一个应用程序的源文件集合。这个项目的名称为“平凡人的日记本”,这可能意味着这是一个...
JavaScript API,全称为Application Programming Interface,是通过JavaScript语言实现的一系列预先定义的函数和对象,允许开发者访问操作系统、浏览器功能或者第三方服务的功能。在Web开发中,JavaScript API扮演着...
这可以通过验证非平凡程序 () 和查找已知安全漏洞 () 来证明。 如何运行语义 以下说明适用于标准 Debian/Ubuntu 发行版,尤其适用于 64 位 Ubuntu 14.04 LTS。 0. 安装基本依赖 安装 JDK 1.8: $ sudo add-apt-...
杰西,简单的通用安全移动代码 该文档是早期草案。 评论表示赞赏! 谢谢。 如今,JavaScript已成为(某种程度上)安全的移动代码的普遍... 非专家可以用来编写非平凡的不可利用的智能合约。 子集EcmaScript 除非另有
在压缩包文件 "ttxx-0006" 中,虽然我们无法得知具体的内容,但根据一般惯例,这可能包含了程序的源代码文件、样式表(CSS)、脚本文件(JavaScript)、图片资源以及可能的数据库脚本。用户在部署应用时,需要将这个...
《全面掌握JavaScript 2020:从零到专家》课程是专为那些希望深入了解JavaScript编程语言的人设计的。这门课程旨在引导学生从基础知识逐渐深入到高级概念,通过实践项目帮助他们巩固所学,从而成为JavaScript专家。...
MandelbrotJS 分形的实验性渲染器,例如用javascript编写的mandelbrot集。 这目前还不是一个完成的程序,而是一个让我测试新想法、工具和渲染算法的地方——但我希望其中的一些能让我随着时间的推移把它变成一个真正...
"sidereal-engine-javascript-legacy" 是一个专为 WebGL 设计的游戏引擎,它利用 JavaScript 这种广泛应用于网页开发的编程语言,为开发者提供了一套工具集,以便于创建交互式三维图形应用,尤其是游戏。JavaScript ...
专业JavaScript 对JavaScript的深入了解使学习其他各种框架(包括React,Angular以及相关工具和库)变得更加容易。 本课程旨在帮助您涵盖构建现代应用程序所需的核心JavaScript概念。 您将开始学习如何在文档对象...
数学浏览器中的非平凡数学。 100%纯JavaScript。 对于现代数学物理学家及其同类。 为了易于使用,所有数学函数都在全局上下文中公开。 尽管这与大多数JavaScript开发相反,但它使最终用户的生活变得更加简单。 该库...
【TiendaVideojuegos: Coderhouse的JavaScript最终项目】是一个专为学习和展示JavaScript编程技能而设计的项目。这个项目旨在帮助学员掌握JavaScript的核心概念,包括DOM操作、事件处理、函数、对象以及数据结构等,...
如今,构建任何非平凡的 JavaScript 应用程序都需要大量代码。 历史上,JavaScript 没有任何模块化系统,它允许您将代码拆分为模块、分离文件并控制它们的依赖项。 此外,大型应用程序不需要在启动时初始化其所有子...
值得注意的是,NaN具有非平凡的特性,即NaN不等于自身,这使得检查一个值是否为NaN变得复杂。通常我们会使用全局函数`isNaN()`来判断一个值是否能被转换为数字,但要注意`isNaN(NaN)`也会返回`true`,因为它会尝试将...
Scala.js Facades: 探索JavaScript库的外观 Scala.js 是一个强大的工具,它允许Scala开发者将他们的代码编译为JavaScript,从而在Web环境中运行。而`scalajs-facades`则是Scala.js生态中的一个重要概念,它提供了一...