javascript高级程序设计小结2

1.引用类型是保存在内存中的对象,保存在对内存中,而基本类型保存在栈内存中。

ECMASCript中所有函数的参数都是按值传递的。在向参数传递基本类型时,被传递的值会被复制给一个局部变量(即命名参数,arguments对象中的一个元素)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。

引用类型和基本类型的主要区别在于对象的生存期。使用new操作符创建的引用类型的实例,在执行离开当前作用域前一直保存在内存中。

var stringVal = "hello world";
alert(stringVal.slice(3)) // "lo world"
alert(stringVal.substring(3)) // "lo world"
alert(stringVal.substr(3)) // "lo world"
alert(stringVal.slice(3,7)) // "lo w"
alert(stringVal.substring(3,7)) // "lo w" (不包含7)
alert(stringVal.substr(3,7)) // "lo worl"(7表示字符数)

alert(stringVal.slice(-3)) // "rld"
alert(stringVal.substring(-3)) // "hello world"
alert(stringVal.substr(-3)) // "rld"
alert(stringVal.slice(3,-4)) // "lo w"
alert(stringVal.substring(3,-4)) // "lo world"
alert(stringVal.substr(3,-4)) // ""

URI编码方法 encodeURI和encodeURIComponent,其中encodeURI不会对本身属于URI的特殊字符进行编码,如冒号,正斜杠,问号和井号;而encodeURIComponent则会对它发现的任何非标准字符进行编码。

Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。

1. 所有的对象都有__proto__属性,该属性对应该对象的原型.
2. 所有的函数对象都有prototype属性,该属性的值会被赋值给该函数创建的对

3. 对象的_proto_属性.
4. 所有的原型对象都有constructor属性,该属性对应创建所有指向该原型的实例的构造函数.
5. 函数对象和原型对象通过prototype和constructor属性进行相互关联.

闭包: 指有权访问另一个函数作用域中的变量的函数。

Dom操作往往是javascript程序中开销最大的部分,因为NodeList对象是动态的,意味着每次访问Nodelist对象,都会运行一次查询,所以最好的办法是尽量减少Dom操作。

原文地址:https://www.cnblogs.com/fesf/p/7694214.html