`
步青龙
  • 浏览: 292694 次
  • 性别: 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 中的this

    ​ 在全局作用域当中,this 永远指向 window,因此在全局作用域里作为普通函数被调用的时候,this 也是指向 window。 function fn1() { console.log(this); //window } fn1(); 3. 作为构造函数被调用,由new调用 ...

    JavaScript详解(第2版)

     3.2.4 变量作用域   3.2.5 变量的拼接   3.3 常量   3.4 要注意的bug   3.5 应知应会   练习   第4章 对话框   4.1 与用户交互   4.1.1 alert&#40;&#41;方法   4.1.2 prompt()方法  ...

    Javascript数组操作高级心得整理

     JavaScript对象没有静态作用域 16  关键字this 16 (4) 定义类或对象的方法 16  工厂方式 16  构造函数方式和原型方式 17  混合的构造函数/原型方式(常用方式) 18  动态原型方法(常用方式) 18  总结...

    JavaScript易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点。...

    javascript 函数及作用域总结介绍

    2、函数自己无法运行,它总是被对象调用的,函数运行时,函数体内的this指针指向调用该函数的对象,如果调用函数时没有明确指定该对象, this 默认指向 window ( strict 模式除外,本文不涉及 strict 模式);...

    JavaScript中的this基本问题实例小结

    当你在代码中使用了 this,这个 this 的值就直接从执行的上下文中获取了,而不会从作用域链中搜寻。 关于 this 的取值,大体上可以分为以下几种情况: 情况一:全局 & 调用普通函数 在全局环境中,this 永远指向 ...

    详释JavaScript执行环境与执行栈

    scope:作用域,如果有作用域嵌套的情况就称作”作用域链”。 variable object:变量对象,用于存储标识符的特殊对象。 this value:this 值。 *标识符:包括变量、函数名、属性名和函数的参数。 ES5 标准中的...

    免费的ES6学习思维导图

    let 和 const:提供了块级作用域的变量声明,使用 let 可以声明局部变量,而 const 用于声明不可重新赋值的常量。 函数的新写法: 箭头函数:这是函数的一种简洁表达方式,它允许我们以更简短的形式写函数,并且改变...

    Javascript中的delete操作符详细介绍

    一、变量 说到javascript中的delete操作符,还是首先要搞清楚javascript中的变量和属性之间的...这些可以大家可以去了解一下javascript作用域和闭包。 代码如下: //原型中声明的属性无法被删除var global = 1;this.g

    理解javascript封装

    封装可以被定义为对对象的内部数据表现形式和实现细节进行隐藏。通过封装可以强制实施信息隐藏。 在JavaScript中,并没有显示的声明私有成员的关键字等。...利用“函数作用域”这一个概念来做。 1. 门户大开型 var

    微信小程序错误this.setData报错及解决过程

    function声明的函数和箭头函数的作用域不同,这是一个不小心坑的地方。可参考箭头函数说明: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions 所以对于这个结果,...

    leetcode分类-blog::cookie:我的博客

    leetcode 分类 生活、工作和兴趣 To Do List 前端 ...基本的表单标签 ...JavaScript JavaScript基础知识 声明 ...执行上下文栈和变量...let可以将变量绑定到所在的任意作用域中(通常是{...}内部) this 浅拷贝(shallow copy)

    程序员考试刷题-MEANPeriod1ExamPrep:MEANPeriod1ExamPrep

    变量和函数将自动在其当前作用域之上声明。 但是,变量在代码块中分配之前不会被分配一个值。 / 前任。 有关示例,请参见 hoisting.js 这在 Javascript 中 由于 Javascript 是一种无类语言,因此使用 this 将指向一...

    JavaScript高级教程

    3.4.1 公用、受保护和私有作用域..............................................75 3.4.2 静态作用域并非静态的..............................................76 3.4.3 关键字 this. 76 3.5 定义类或对象...........

    Java语言基础下载

    文档对象功能及其作用 538 document中三个主要的对象 539 文档对象的基本元素 541 窗口及输入输出 544 输出流及文档对象 546 简单的输入、输出例子 547 内容总结 551 独立实践 552 第二十八章: Servlet 553 学习...

    buxuku.github.io:林晓东的个人博客

    前端 [2021-01-29] [2021-01-29] [2021-01-29] [2021-01-29] ...[2021-01-29] javascript中的词法作用域 [2021-01-29] 不使用var就不是声明变量 [2021-01-29] jsbin神一般地在线书写,测试,分享代码 [2021-

    千方百计笔试题大全

    2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8...

    java面试宝典

    2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8...

    Java学习笔记-个人整理的

    {2.1}类与对象}{45}{section.2.1} {2.1.1}构造方法}{45}{subsection.2.1.1} {2.1.2}Java变量类型}{47}{subsection.2.1.2} {2.1.3}面向对象的编程}{47}{subsection.2.1.3} {2.2}继承}{48}{section.2.2} {2.2.1}...

Global site tag (gtag.js) - Google Analytics