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

JavaScript学习—对象作用域

2012-06-19 10:57 113 查看
一、变量作用域

JavaScript变量按数据类型分:字符串(String),数值(Number),布尔值(boolean)。按作用域分:全局变量和局部变量

全局变量:最外层定义、未定义直接赋值、this的变量

x = 1; //x是全局变量

y = function(){ //y是全局变量

z = 2; //y是全局变量

this.o = 3; //o是全局变量

}

局部变量:用var定义的变量。声明在函数内部的变量则具有局部作用域,在函数的外部是不能直接访问的。

var x = 1; //x是局部变量

举例(1):

if (!("a" in window)){var a = 1;}

alert(a);

结果:跳出“undefined”框,预编译:global_object={a:undefined,}执行:activation_object={a:undefined,alert:undefined,}

举例(2):

var a = 12;

function a(x){return x*2;}

alert(a);

结果:跳出“function a(x){var x = 12;}”框,变量a被2次赋值。

举例(3):

function a(o,p,q){argument[2]=10;alert(q);}

a(1,2);

结果:跳出“undefined”框,形参q没有被赋值。

举例(4):

function a(){

var x=12;

y=13;

}

alert(y); //13

alert(x); //脚本错误

结果:第一次跳出“13”框,第二次出错

举例(5):

function add(num1,num2){var sum = num1+num2;}

var total = add(5,10);

作用域链如下:



二、JavaScript对象

1.创建对象:

var x = {var m=1;var n=2}; //直接创建对象x

var x.m = 1;var x.n = 2; //对属性和方法赋值创建对象

function y(m,n){this.m=m;this.n=n;} var x = new y(1,2); //创建构造函数,实例对象。

举例(1):



function A(){} //创建a对象,作用链如下:
1、创建一个对象(有constructor属性及[[Prototype]]属性),根据ECMA,其中[[Prototype]]属性不可见、不可枚举

2、创建一个函数(有name、prototype属性),再通过prototype属性引用刚才创建的对象

3、创建变量A,同时把函数的引用赋值给变量A

2.对象的属性和方法

对象的属性和方法支持4种不同的类型:

private property(私有属性),

dynamic public property(动态公有属性),

static public property/prototype property(静态公有属性或原型属性),static property(静态属性或类属性)。

举例(1):

function myclass(){

var x = 1; //私有属性

var this.z = 2; //动态公有属性

}

myclass.prototype.y = 3; //静态公有属性

myclass.o = 4; //静态属性

var a = new myClass();

alert(a.x); //undefined

alert(a.z); //2

alert(a.y); //3

alert(a.o); //undefined

alert(myclass.o); //4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: