您的位置:首页 > Web前端 > JavaScript

js面向对象编程

2016-07-22 12:53 288 查看
js面向对象的编程

javascript的第一个语言特性:引用

在js中引用总是只指向最终被引用的对象,而不会是引用本身,它会沿着引用链向下追溯直到指向核心的对象。例如

例如在下面的这个例子中itme2 item3 都引用item1所以只要他们呢的引用源item1改变紧接着这两个都会改变最后alert出来的item3的值一定会是item1的值。

例1:

var item1 = [“1”,”2”,”3”];

var item2 = item1;

var item3 = item2;

if(item1.length == item2.length&&item1.length == item3.length){

alert(“same length”);

}

item1.push(“4”);

if(item1.length == item2.length&&item1.length == item3.length){

alert(“still same length”);

alert(item3);

}

在例1中引用源item1在改变的时候没有生成新的对象所以最后三个Item都是相等的,下面我们来看另外一个例子。

var item1 = “test”;

var item2 = item1;

item1 += “ing”;

alert(item1+”…”+item2);

在js引用中这里不是一个子修改的引用,因为他的引用源变化了,这里的变化是在内存中重新开辟了不同的空间给他,所以之前引用item1的引用者的值将不会在等于引用源,如果有C或者java等其他语言你会很容易的明白这一点。

js的第二个特性:函数重载和类型检查

其它面向对象的语言(比如 Java)的一种共有的特性是“重载”函数的能力: 传给它们

不同数目或类型的参数,函数将执行不同操作。虽然这种能力在 JavaScript 中不是直接可用

的,一些工具的提供使得这种探求完全成为可能。

函数的重载是通过arguments伪数组来实现,里面的值是参数。

类型的检查涉及到一个typeof语法

typeof 语句的使用引入了类型检查。因为 JavaScript(目前)是一种动态类型语言,使

得这个话题格外有用而重要的话题。 有许多种方法检查变量的类型;我们将探究两种特别有

用的。

第一种检查对象类型的方式是使用显式的 typeof 操作符。这种有用的方法给我们一个

字符串名称,代表变量内容的类型。这将是一种完美的方案,除非变量的类型或者数组或自

定义的对象如 user(这时它总返回”ojbect”,导致各种对象难以区分)。

能够typeof出来的5中数据类型 String Number boolean object undefind

检查对象类型的第二种方式是参考所有 JavaScript 对象所共有的一个称为 constructor

的属性。该属性是对一个最初用来构造此对象的函数的引用。这种方法所获得的类型都是对象。

js语言中的第三个特性:作用区域

作用域是 JavaScript 中一个较难处理的特性。 所有面向对象的编程语言都有某种形式的

作用域;这要看是什么上下文约束着作用域。在 JavaScript 里,作用域由函数约束,而不由

块约束(如 while,if,和 for 里的语句体)。最终可能使得一些代码的运行结果表面上显得怪异

(如果你来自一种块作用域语言的话)。

全局变量 、隐式全局变量

js语言中的第四个特性:闭包(读着感觉像内部类)

闭包意味着内层的函数可以引用存在于包绕它的函数的变量, 即使外层的函数的执行已

经终止。这一特殊的论题可能是非常强大又非常复杂的。我强烈推荐你们参考本节后面将提

及的站点,因为它有一些关于闭包这一话题的精彩的信息。

//创建一个用作包装的匿名函数

(function(){

//这个变量通常情况下应该是全局的

var msg = “Thanks for visiting!”;

//为全局对象绑定新的函数

window.onunload = function(){

//使用了“隐藏”的变量

alert( msg );

};

//关闭匿名函数并执行之

})();

未完。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息