【Go 语言社区】js开发积累

js开发积累

[size=13.3333px]

一、在js中遍历数组与其他语言的不同之处

for(var x in myvars){

  alert(myvars[x]);//注意访问的方式不同 x才是数组下标 0,....

}

其他语言遍历类似这样的:

foreach(数组名 as 键名->值)

or

foreach (数组名 as 值)

二、js定义类以及其成员的方式

<script> var Class = {     create: function() {         return 5;      } }

var RevealTrans = Class.create();//调用该函数的方式有点特别。做个记号 alert(RevealTrans);//返回5 </script>

函数的两种不同使用形式:前面new 关键字与 没有 new

关键概念:

1.js中的函数与类都是同一个东西。因为没有类,类就是使用函数进行模拟实现其他语言类的方式

2.JS中的所有function都是一样的,但是用途可能是不同的(用作构造对象抑或是执行一个过程)。 使用new就是将函数模拟成类进行使用。不是有new,就相当于执行了该函数。 ClassName就是一个函数,当出现在new后面的时候就作为一个构造函数来构造对象。

3.在方法外部添加新变量 var Class = {     create: function() {         return function() {             this.initialize.apply(this , arguments);         }     } }  var A = Class.create();//构造个一个function复制给A //A是一个function(),那么A. prototype,就是function中的一个变量 所以A.prototype表示在方法中添加一个新变量 //该变量其实就是一个对象,该对象里面定义什么方法 那么function产生的对象就拥有什么方法。模型是大概的东西,可以以后变化的。很好理解这里使用模型。 A.prototype={     initialize:function(v){         this .value=v;     }     showValue:function(){         alert(this.value);     } }

/////////////////////////////////////////// var A = Class.create();等价于如下代码:

var A = function() {             this.initialize.apply(this , arguments);         } 测试后,上面这样使用也是可行的。只是考虑到代码扩展性,就使用了Class.create()

///////////////////////////////////////////

A.prototype = { initialize:function(v){         this .value=v;     }

} 就相当于对A增加一些方法了 执行上面代码后,A对象的结果改变后,等价于:

////////////////////////////////////

A.prototype = {

   function() {             this.initialize.apply(this , arguments);         }//在原来基础上的   initialize:function(v){         this.value=v;     }

}

通俗地理解是:针对A对象增加了一个方法——initialize()

///////////////////////////////////

由于js中将所有的东西都看成对象。那么下面这样使用就不奇怪了:

var a = new A("hello world");

arguments参数:

function test() { alert(arguments[0]);     }

test("abc");//返回abc 所有传递给函数的参数都隐式地保存在arguments数组中 调用格式是:当前正在执行的对象.arguments[n]

可以这样理解: /////////////////////// arguments[0]等价于: test.arguments[0]. 在使用的时候为什么不能这样用:

alert(this.arguments[0]);//报错:未定义     /////////////////////////

call和apply总结: 说明白一点其实就是更改对象的内部指针,即改变对象的this指向的内容。 call函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this。后面的参数都是传递给当前对象的参数。

格式:

要继承的对象.call(当前对象); 通俗理解:当前什么对象继承"要继承的对象"

例子: function parent(){ this.a="a"; this.b="b"; } function child(){ parent.call(this);//把this指向的内容替换成parent中this指向的内容。就是实现指针替换。 } var c = new child(); alert(c.a); //c.a可以看成去访问parent方法里面的this了。因为child方法中有call方法     alert(c.b);

个人理解:js中没有类的概念。所有东西都是对象。所有就无法像其他语言一样,可以使用extends实现类继承。js的call和apply方法可以实现继承的功能

概念总结:

js将所有东西都看成是对象。函数是对象的一种形式。函数也看成是一种变量。

可以只输出函数名,而不写函数后面的括号(),实现调用。在一本ajax_IBM书中就提到: onreadystatechange=updatePage;//这里使用updatePage就可以完成对函数updatePage()进行调用。

原因是什么,书上说大致意思是:因为js是一种弱类型的语言。这就意味着,可以用变量引用任何东西。JavaScript 也将该函数名看作是一个变量。

关于弱类型语言的整体思考:

php也是一门弱类型的语言。在调用类的时候。类名大小写是没关系的。比如,类名是Page,而使用 new page也是能够生效的。联想到在php手册中提到一个意思,大致是:函数名不区分大小写的。也就是调用函数的时候,大小写之间的区别是不会影响使用的。

是不是可以这样理解:一般弱类型语言方法有没有括号不会受到影响。大小写只差也不会导致出错呢?

本文分享自微信公众号 - Golang语言社区(Golangweb)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-01-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP实战技术

JS思维导图!前端后台都可以看的!

JS思维导图,JS玩的不好的可以试试这个,你会感谢我的! ? ? ? ? ? ? ? ?

52480
来自专栏pangguoming

理解js中的原型链,prototype与__proto__的关系

首先,要明确几个点: 1.在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有...

39680
来自专栏大闲人柴毛毛

稳扎稳打JS——this

this的值是在运行时确定的 JS中的this究竟代表什么,这是在程序运行时根据上下文环境确定,可以分为以下几种情况。 1. 全局作用域中的this 在全局作...

43950
来自专栏pangguoming

把表单转成json,并且name为key,value为值

http://jsfiddle.net/sxGtM/3/ http://stackoverflow.com/questions/1184624/convert-...

524140
来自专栏PHP实战技术

起点到终点?web地图?我来告诉你!

小伙伴们,做外卖项目的小伙伴,有没有遇到过,web端显示配送路线的小问题呢?今天思梦PHP就给大家带来高德地图,从添加起点到录入终点,做了一个指示路线的小功能!...

37770
来自专栏pangguoming

一看就懂的ReactJs入门教程(精华版)

现在最热门的前端框架有AngularJS、React、Bootstrap等。自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件...

45560
来自专栏大闲人柴毛毛

稳扎稳打JS——执行上下文

上下文环境的初始化在代码执行前完成 JS有三种作用域:全局作用域、函数作用域、eval作用域(不常用,不做介绍)。 在JS代码执行前,首先会对这三种作用域进行...

37270
来自专栏大闲人柴毛毛

稳扎稳打JS——“继承”

JS使用原型链实现“继承” JS是“基于对象”的语言,因此没有继承。但可以使用JS的特性实现“继承”——原型链。 JS使用_proto_属性构造原型链,如 ...

42740
来自专栏pangguoming

JS生成UUID

一、UUID是什么   UUID就是Universal Unique IDentifier的缩写,它是一个128位,16字节的值,并确保在时间和空间上唯一。 它...

2.5K80
来自专栏大闲人柴毛毛

稳扎稳打JS——“对象”

一切皆“对象” JS中一切皆“对象” “对象”是属性的集合,而属性又是对象。既然属性又是对象,那么一个对象的属性也可以拥有属性,如: //定义一个函数getN...

33660

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励