`
步青龙
  • 浏览: 297646 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

Javascript 特殊的对象声明与this作用域

 
阅读更多

 原JS

<SCRIPT LANGUAGE="JavaScript">
	  var o = { x: 8, 
		valueOf: function(){
			return this.x + 2;
		}, 
		toString: function(){
			return this.x.toString(); 
		}
	  }, result = o < "9";
	  alert(o);
</SCRIPT>
 

 

 

分析:有疑问的地方我打上问号

<SCRIPT LANGUAGE="JavaScript">
	  // 如果valueOf和toString 方法都没有则会调用Object类的toString 返回字符串[object Object]是栈的引用类型的字符串表示,"[object Object]" 与数字字符串相比永远返回false,此时比较的是字符串
	  var o = { 
	   x: 8, 
	   valueOf: function(){ 
		  alert("valueOf  调用");
		  // 在比较大小的时候:对象先转换成数值,如果有valueOf方法,会调用valueOf,而不去调用toString
		  // 如果没有valueOf 对象回去调用toString 并返toString的数值
	      return this.x + 2; 
	   },
	   toString: function(){ 
		  // alert("toString调用");
	      return   this.x.toString(); // 在字符串比较大小的时候如果前面是数字后面是字符串 则返回值是数字?
		  // 如果是非数字 则是返回组成的字符串?
	   },
	   test: function(){
		 var x = 90;
		 this.x = 1999;// test函数已经是o的一个属性或方法,this指向的是实例,不一定是当前作用域
		 // 方法里面虽然定义了x 但是this.x 指向的是o对象的x 变量,this到底是谁,谁调用就是谁!
	   }
	  }; 
	  var result = (o < "9"); //字符、字母按照ASC II码值转成9   对象转换成10,
	  // 即 var result  =  8+2  < 9返回 false 
	  // o.test();
	  alert(o); // 
	  

	  /*无关代码 alert(null==undefined);
	   alert(null!=false);
	   alert(Number(undefined)==0);// false 
	   alert(Number(null)==0);// true */
</SCRIPT>
 

 

 

 

 

 

分享到:
评论
1 楼 damoqiongqiu 2013-01-07  
Good 顶

相关推荐

    JavaScript — 原型链与作用域链1

    函数`function(e) {...}`则有自己的作用域,`this`在这里根据调用方式不同可能指向不同的对象,`arguments`对象包含传递给函数的所有参数。 总结来说,JavaScript的原型链和作用域链是其灵活性和强大功能的基础,...

    JavaScript:函数与作用域

    ### JavaScript:函数与作用域 #### 一、函数基础 **1.1 函数声明与表达式** 在JavaScript中,函数是一段可重用的代码块,用来执行特定任务。函数可以通过两种方式进行定义:函数声明和函数表达式。 - **函数...

    深入理解JavaScript作用域共12页.pdf.zip

    9. **作用域与this**:`this`关键字的值取决于函数的调用方式,而不是声明方式。在全局和函数作用域中,`this`通常指向全局对象(在浏览器中是`window`),而在方法中,`this`指向调用该方法的对象。 10. **箭头...

    JavaScript语言 变量、数据类型、对象、函数、作用域、事件、字符串.pdf

    ### JavaScript核心概念详解 ...以上内容覆盖了JavaScript的基本概念,包括变量、数据类型、对象、函数、作用域、事件和字符串。这些是学习和理解JavaScript的核心组成部分,对于开发Web应用至关重要。

    Js作用域和this关键字1

    JavaScript中的作用域和`this`关键字是编程中非常重要的概念,尤其在JavaScript中,它们具有独特的特点和行为。本文将深入探讨这两个概念及其在实际编程中的应用。 首先,我们来看一下**作用域(Scope)**: 作用...

    深化浅析JavaScript中的作用域和上下文_.docx

    作用域决定了变量的可见性和生命周期,而上下文则与`this`关键字的值有关,它指定了当前执行代码的对象。 **变量作用域**: 在JavaScript中,变量可以存在于全局作用域或局部作用域。全局变量在整个程序运行期间都...

    Javascript 面向对象编程小结

    总的来说,这篇博客和提供的资源深入探讨了JavaScript中的面向对象编程,涵盖了类与对象、原型与继承、作用域和`this`的关键概念,以及如何利用这些知识来创建实用的工具和应用。通过理解和实践这些内容,开发者可以...

    javascript 函数及作用域总结介绍

    这一点是JavaScript作用域与动态作用域语言(比如Bash)的主要区别。 第二个需要注意的点是JavaScript中的this关键字。在函数内部,this关键字的值取决于函数的调用方式。如果函数被一个对象调用,那么this指向该...

    JavaScript:对象与原型链教程

    本教程详细介绍了JavaScript中的对象与原型链概念,包括数据类型与变量、函数与作用域以及对象与属性的各个方面。理解这些基本概念对于深入学习JavaScript至关重要。通过本教程的学习,你应该能够更好地掌握...

    JavaScript作用域与作用域链深入解析

    在JavaScript中,全局作用域通常是由最外层函数、直接在全局对象(如浏览器环境中的window对象)上定义的变量以及未使用var、let或const声明的变量组成。而局部作用域通常由函数定义,局部作用域内的变量和函数不能...

    关于javascript 回调函数中变量作用域的讨论

    ### JavaScript回调函数中变量作用域解析 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,其灵活性和强大功能使其成为Web开发不可或缺的一部分。在JavaScript编程中,回调函数是一种非常重要的概念,尤其是...

    跟我学习javascript的作用域与作用域链

    - 当函数执行时,`[[Scope]]`会被用来创建一个执行期上下文,其中的作用域链包含当前函数的`[[Scope]]`对象,以及一个活动对象(Activation Object),活动对象包含了函数的局部变量、参数和`this`值。 - 活动对象被...

    JavaScript作用域、闭包、对象与原型链概念及用法实例总结

    本文将深入探讨JavaScript的四个核心概念:作用域、闭包、对象和原型链,并结合实例进行详细解释。 1. **作用域**: - **函数作用域**:JavaScript中,变量的作用域主要由函数决定,而不是代码块。这意味着在函数...

    深入理解javascript作用域第二篇之词法作用域和动态作用域

    在JavaScript中,我们使用的是词法作用域,这意味着函数的作用域是在代码编写时根据函数声明的位置来决定的,而不是根据函数调用的位置。词法作用域有助于避免变量查找的混乱,因为它遵循一个固定的规则:从当前作用...

    JavaScript对象模型-执行模型

    在执行过程中,引擎会进行变量提升(Hoisting),将`var`和函数声明提升到当前作用域顶部。对于`let`和`const`声明,JavaScript引入了块级作用域,它们不会被提升。 此外,JavaScript是单线程的,但通过事件循环...

    Javascript 链式作用域详细介绍

    总结来说,链式作用域在JavaScript中是一个核心概念,涉及到变量的作用范围、变量提升、函数声明与表达式的区别、`this`关键字的指向,以及编程习惯等多个方面。理解并应用好链式作用域,对编写高效、可维护的...

    Javascript函数与对象

    函数不仅可以封装代码块,还可以接受参数、返回结果,并且能够访问作用域内的变量。在JavaScript中,函数声明非常灵活,可以使用函数表达式或函数声明。 ##### 函数表达式 ```javascript const add = function(a, b...

    JavaScript的函数声明与应用

    箭头函数有两点需要注意:一是它们没有自己的`this`值,而是继承自外层作用域;二是当只有一个参数时,括号可以省略,如`x =&gt; x * x`。 最后,闭包(Closure)是JavaScript中的一个高级概念,它允许函数访问并操作...

Global site tag (gtag.js) - Google Analytics