JavaScript学习—对象作用域

一、变量作用域

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值