博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[06] JavaScript 类型
阅读量:7095 次
发布时间:2019-06-28

本文共 2475 字,大约阅读时间需要 8 分钟。

下面对知识点总结:

1.类型分类

a.原始类型:number, string, boolean, null, undefined

b.对象类型:除了原始类型都是(例如:object,array, function, new xxx[构造函数 class对象 Date, RegExp, Error])

备注:NAN,非数字,与任何值都不等,包括NAN

2.浮点数的计算差值

任何二进制浮点数的编程语言中,都会出现以下问题.因此我们在金融的计算业务中,使用整数计算(例如使用1分代替0.01元)

var a = 0.3 - 0.2;var b = 0.2 - 0.1;console.log( a == b); // false

3.对象

3.1 对象的遍历方式

for ....in  : 遍历自己可枚举的属性+ 继承的可枚举属性Object.isOwnProperty(Object, property): 判断是否是自己的属性

3.2 对象的属性

对象上有两种属性:一般的属性和存取器属性。

var object = {    x: 10, // 一般属性    get y() { return 3*this.x},    set y(num) { this.x = num + this.x;}};object.y // 30object.y = 20;  // x = 30; object.y // 120

3.3 属性的特性: 值,可写,可枚举,可配置  || 存取器属性:读取(get), 写入(set), 可枚举,可配置

例如例子,复制属性的特性

Object.defineProperty(Object.prototype,    'extend',    {         writable: true,         enumerable: false,         configurable: true,         value: function(o) {              var names = Object.getOwnPropertyNames(o);              for( var i = 0; i < names.length; i ++) {                    console.log(name[i]);                  if(names[i] in this) {                     continue;                  }                  else {                     Object.defineProperty(this, names[i], Object.getOwnPropertyDescriptor(o, names[i]))                  }              }          }    })var a = {x:1}; var b ={y: 2}; a.extend(b); //{x:1,y: 2}

 3.4 创建对象

1.字面量创建var object = {a: 1}; // prototype: Object.prototype Object.prototype.isPrototypeOf(object); // true2. new 方式创建function a() {}var object = new a(); // prototype: a.prototype object.__prop__ == a.prototype; // true  a.prototype a.prototype.isPrototypeOf(object); // true3.Object.create()var object = Object.create({y: 1}); // prototype: Object.prototype:  Object.prototype.isPrototypeOf(obejct); // true // Object.prototype: 就是Object的构造函数 // a.prototype: 就是a的构造函数

3.5 对象的三个属性

 a.prototype

b.class 类属性

一般是取对象的toString()方法的第8个到倒数第二个位置的字符串function A() {}console.log(A.toString().substring(8, -1)); // Function如果toString方法被重写,就不可以通过这种方式完成,可以通过以下方式:function classOf(o) {    if(o === null ) { return 'null'};    if(o === undefined) { return 'undefined'}    return Object.prototype.toString.call(o).slice(8,-1)} function A() {}classOf(A) // Function

c.可拓展性

表示对象是否可以添加新的属性。 

Object.isExtensible(): 判断是否可拓展Object.preventExtensions(obj); // 设置不可拓展// 与上同理,但是可以将属性设置为不可配Object.isSealed()Object.seal(obj)//冻结, 更严格锁定对象,不仅可以设置不可拓展和将属性设置为不可配,可以将所有数据设置为只读(存取器属性不受影响)Object.freeze()Object.isFrozen()

  

转载于:https://www.cnblogs.com/yeziTesting/p/8269649.html

你可能感兴趣的文章
Incorrect NSStringEncoding value 0x0000 detected.
查看>>
(转)as3数组的深复制和浅复制
查看>>
Choose a destination with a supported architecture in order to run on this device.
查看>>
HTML5/CSS3系列教程:HTML5 区域(Sectioning)的重要性
查看>>
Spring Batch学习笔记
查看>>
asp.net mvc 如何在执行完某任务后返回原来页面
查看>>
Oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子
查看>>
ASP.NET 中 GridView(网格视图)的使用前台绑定
查看>>
Windows的本地时间(LocalTime)、系统时间(SystemTime)、格林威治时间(UTC-Time)、文件时间(FileTime)之间的转换...
查看>>
[转]XBRL应用软件分类
查看>>
C++ 文件的复制、删除、重命名
查看>>
Oracle Patch Set Update and Critical Patch Update April 2011 Released
查看>>
hdu 2189
查看>>
std::map, std::multimap, std::tr1::unordered_map 区别 - 笔记本 - 博客频道 - CSDN.NET
查看>>
/usr/bin/ld: cannot find -lxxx问题总结
查看>>
C 语言 restrict 关键字的使用
查看>>
ASP.NET 自定义成员资格提供程序 Part.4(使用自定义提供程序类)
查看>>
ASP.NET调用V3版本的Google Maps API
查看>>
苹果面试8大难题及答案
查看>>
.NET:动态代理的 “5 + 1” 模式
查看>>