首页 > 代码库 > 典型例子
典型例子
1.变量声明作用域
(function(){ var a = b = 5;})();alert(b); //5
b默认是全局变量,没有显示的用window.b 引用,如果采用严格模式 ‘use strict‘
(function(){ ‘use strict‘ var a = window.b = 5;})();
注意这里:alert(a); // error 因为a是函数局部变量 访问不到。
2. 原型的理解
对String 原型增加一个函数,使用方式:str.repeatity(2); // strstr;
if(typeof String.prototype.repeatify != "function") { String.prototype.repeatify = function(times){ var str=""; for(var i=0;i<3;i++){ str += this; } return str; } }
或者
String.prototype.repeatify = String.prototype.repeatify || function(times){ var str=""; for(var i=0;i<3;i++){ str += this; } return str;
先判断原型中是否存在repeatity 函数,防止每次都重新设置函数
注意this 是指当前调用的string对象。
3. 变量声明问题
(function test(){ // alert(a); //undefined // alert(foo()); //2 var a = 1; function foo(){ return 2; }})();
第一个alert 时是undefind 因为a已经存在函数内,被声明但是没有被初始化,相当于
(function test(){ var a; function foo(){ return 2; }; alert(a); //undefinde a = 1;})();
4. 作用域问题
var name = "Jack";var obj = { name : "Obj_Jack", prop:{ name:‘prop_Jack‘, getName : function(){ return this.name; } }}// alert(obj.prop.getName()); //prop_Jackvar t = obj.prop.getName; //t是全局函数// alert(t()); //Jack// alert(t.call(obj)); // Obj_Jack (重新设置作用域)
第一个alert obj引用属性prop,然后prop引用在调用getName 方法 此时的作用域在prop引用内。
第二个alert 变量t是全局变量,引用指向函数getName,此时的作用域是全局的。
第三个alert t全局调用call 方法第一个参数是设置作用域,此时的作用域改为obj引用内。
典型例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。