JavaScript对象

作者: 一杯热忱c | 来源:发表于2018-04-14 12:48 被阅读0次

全局对象 window

ECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对象(浏览器先存在的)
window 就是一个哈希表,有很多属性。
window 的属性就是全局变量。

这些全局变量分为两种:

  1. 一种是 ECMAScript 规定的
  • global.parseInt
  • global.parseFloat
  • global.Number
  • global.String
  • global.Boolean
  • global.Object
  1. 一种是浏览器自己加的属性
  • window.alert
  • window.prompt
  • window.comfirm
  • window.console.log
  • window.console.dir
  • window.document
  • window.document.createElement
  • window.document.getElementById

Number

JavaScript的作者Brendan Eich被公司要求JS要像Java,所以他模仿java写了var n = new Number(1);这样n是一个对象,有自己的属性,但太麻烦,于是他又写了一种var n =1;n是基本类型但他用了一个方法,使这样声明的也可以用Number对象的属性

var n=1;
n.toString();       //n用toString时,本质是下面这两行,实质n是没有属性的

var temp = new Number(n);    //声明了一个临时变量temp,并将n作为Number对象赋给它
temp.toString();             //用temp来执行toString,执行完后temp就被抹杀了

n.xxx = 2;      //可以的
n.xxx           //但undefined,因为xxx是存在temp的,上一句的temp执行完后就被抹杀,所以xxx也被抹杀了

String

var s = 'abc';      //     原理和Number一样

var s2 = new String(s);
s2[0]    //    'a',因为String()对象有hash的属性

s[0]     //    'a',s也能调用这个属性,但s实质没有属性,这个原理和上面Number一样

s.charCodeAt(0)    //    97,a的unicode码
s.charCodeAt(0).toString(16)  //'61',a的unicode码的十六进制

'   abc   '.trim();      //  'abc',去掉字符串两边的空格

var s1 = 'Hello';
s.concat(s1);      //    abcHello,连接两个字符串

s1.slice(0,1);      //   'H',slice是切片,切下0到1之前的内容

s1.replace('e','o')    // 'Hollo',替换(注意S1还是原来的S1,replace是得到一个新的字符串'Hollo')

s1.length    //    5

Boolean

5个falsy值,0、NaN、null、undefined、””,除了这5个,其他值都是true
所有对象都是true

var b = false;
var b1 = new Boolean(false);
if(b){console.log('true')};
if(b1){console.log('true')};      // true
//只会输出b1,因为所有对象都是true!!

Object

var o1 = {};      //常用方法
var o2 = new Object();

o1 === o2  //false,因为比较的是内存地址,而地址不同

相关文章

网友评论

    本文标题:JavaScript对象

    本文链接:https://www.haomeiwen.com/subject/zojkkftx.html