javascript变量作用域在不同浏览器的处理

丶淘气宝宝丶

丶淘气宝宝丶

2016-02-20 00:40

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享javascript变量作用域在不同浏览器的处理,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

1.关于prototype:这里prototype是javascript的一个特性,不是那个有名的prototype框架:

script type="text/javascript"
var string="hello world";
try{
  alert(string.phone());
}catch(e){alert(e);}
String.prototype.phone=function()
{
  return "159-10957151";
}
 
alert(string.phone());
/script

2.关于变量作用域,和IE,firefox对js的不同处理,这里有几个例子,有几个是原来从别处看到的记的笔记,有的是我自己挖掘出来的.

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

2.1

script type="text/javascript"
  var deep_thought = {
   the_answer: 42,
   ask_question: function () {
    return this.the_answer;
   }
  };
 
  var the_meaning = deep_thought.ask_question();
  alert(the_meaning);
/script

2.2

script type="text/javascript"
  function test_this() {
   return this;
  }
  var i_wonder_what_this_is = test_this();
  alert(i_wonder_what_this_is);
  // result: [object window];
/script

2.3:

script type="text/javascript"
  function click_handler() {
   alert(this); // 弹出 window 对象
  }
/script
 ...
button id='thebutton' onclick='click_handler()'Click me!/button

2.4

script type="text/javascript"
  function click_handler(obj) {
   alert(obj);
   //result:[object HTMLButtonElement]
  }
/script
 ...
button id='thebutton' onclick='click_handler(this)'Click me!/button

2.5

button id='thebutton' onclick='click_handler(this)'Click me!/button
script type="text/javascript"
 function BigComputer(answer) {
  this.the_answer = answer;
  this.ask_question = function () {
   alert(this.the_answer);
  }
 }
 
 function addhandler() {
  var deep_thought = new BigComputer(42),
   the_button = document.getElementById('thebutton');
   the_button.onclick = deep_thought.ask_question;
 }
 window.onload = addhandler;
 //result [undefined]
/script
 ...

2.6

button id='thebutton' onclick='click_handler(this)'Click me!/button
script type="text/javascript"
 function BigComputer(answer) {
  var self=this;
  self.the_answer = answer;
  self.ask_question = function () {
   alert(self.the_answer);
  }
 }
 
 function addhandler() {
  var deep_thought = new BigComputer(42),
   the_button = document.getElementById('thebutton');
   the_button.onclick = deep_thought.ask_question;
 }
 window.onload = addhandler;
 //result [42]
/script
 ...

2.7

button id='thebutton' onclick='click_handler(this)'Click me!/button
script type="text/javascript"
function btn_click(){
  alert(this);
}
 
 function addhandler() {
   the_button = document.getElementById('thebutton');
   the_button.onclick = btn_click;
 }
 
 window.onload = addhandler;
 
 //result [undefined]
/script
 ...

2.8

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

button id='thebutton' onclick='click_handler(this)'Click me!/button
script type="text/javascript"
function real_func()
{
  alert(this);
}
function btn_click(){
  setTimeout(real_func,100);
}
 
 function addhandler() {
   the_button = document.getElementById('thebutton');
   the_button.onclick = btn_click;
 }
 
 window.onload = addhandler;
 
 //result [undefined]
/script
 ...

2.9

button id='thebutton' onclick='click_handler(this)'Click me!/button
script type="text/javascript"
 Function.prototype.bind = function(obj) {
  var method = this,
   temp = function() {
    return method.apply(obj, arguments);
   };
 
  return temp;
 }
var  real_func=function()
{
  alert(this);
}
function btn_click(){
  setTimeout( real_func.bind(this),100);
}
 function addhandler() {
   the_button = document.getElementById('thebutton');
   the_button.onclick = btn_click;
 }
 window.onload = addhandler;
 //result [undefined]
/script
 ...

2.10

script
  //** variables need to be defined
  alert(document);          // [object HTMLdocument]
  alert(window.document);   // [object HTMLdocument]
 
  alert(window.face);      //pretty
  var face="pretty";
  alert(face);             //pretty
  alert(window.face);      //pretty
  alert(window.sock);      //undefined
  alert(sock);              // ERROR: sock not defined
/script

2.11

script type="text/javascript"
function method()
{
  var window={};
  alert(window.location);
}
  alert(window.location);
  method();
  alert(window.location);
/script

2.12

script type="text/javascript"
   var window={};//ERROR:非法赋值!
   // this works in IE,but throw an Exception in firefox
   alert(window.location);
/script

2.13

script type="text/javascript"
  /** 这是一段很让人恼火的代码
  可以禁用alert
  */
  window.alert("hello world");
  window.alert=function(str){
      document.write(str);
  };
  alert("hello world");
  window.alert("hello world");
/script

2.14:

注意这三个html文件的结果有什么不同.
a.html:
script type="text/javascript"
alert(sock);
function sock()
{
  alert("function sock executed!");
}
alert(sock);
/script
b.html:
script type="text/javascript"
alert(sock);
var sock=function()
{
  alert("function sock executed!");
}
alert(sock);
/script
c.html:
script type="text/javascript"
// 这里并不弹出"undefined"
// 有点偏心啊!
alert(sock);
/script

2.15

看看IE,firefox下分别运行有何不同:

script type="text/javascript"
Object.prototype.hello=function(){
  alert("hello");
}
window.hello();
/script

展开更多 50%)
分享

猜你喜欢

javascript变量作用域在不同浏览器的处理

Web开发
javascript变量作用域在不同浏览器的处理

javascript的作用域

Web开发
javascript的作用域

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Javascript 各浏览器的 Javascript 效率对比

Web开发
Javascript 各浏览器的 Javascript 效率对比

JavaScript教程:浏览器对象层次及其主要作用

Web开发
JavaScript教程:浏览器对象层次及其主要作用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

变量的作用域与存活期

编程语言 网络编程
变量的作用域与存活期

JavaScript中的Navigator浏览器对象

Web开发
JavaScript中的Navigator浏览器对象

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Windows 8.1下拨号651错误如何解决

Windows 8.1下拨号651错误如何解决

Mac如何使用磁盘工具快速加密文件夹

Mac如何使用磁盘工具快速加密文件夹
下拉加载更多内容 ↓