0

0

javaScript常用知识实例分享

零下一度

零下一度

发布时间:2017-06-30 10:32:50

|

1317人浏览过

|

来源于php中文网

原创

对象

对象可以通过两种形式定义: 声明形式和构造形式

声明形式语法: var myObj = {key:value}

构造形式语法: var myObj = new Object(); myObj.key = value;

类型:   语言类型有六种 string number boolean null undefined object

立即学习Java免费学习笔记(深入)”;

内置对象: String Number Boolean Object Function Array Date RegExp Error

var myObject = {

    a:2

}

      myObject.a; //2    属性访问

      myObject["a"] // 2  键访问

 

ES6 可计算属性名

var prefix  = "foo";

var myObject = {

[prefix + "bar"] : "hello",

[prefix + "baz"]: "world"

};

myObject["foobar"]; // hello

myObject["foobaz"]; // world

1.writable   决定是否可以修改属性的值

var myObject = {};

Object.defineProperty(myObject,"a",{

value2,

writable:false, // 不可写!

configurable: true,

enumerable: true

});

myObject.a = 3;

myObject.a;   // 2

2.configurable

  只要属性是可配置的,就可以使用defineProperty(..) 方法来修改描述属性。

var myObject = {

a : 2

};

myObject.a = 3;

myObject.a; // 3

Object.defineProperty(myObject,"a",{

value4

writable:true,

configurable:false,// 不可配置

enumerable: ture

});

myObject.a; // 4

myObject.a = 5;

myObject.a; // 5

Object.defineProperty(myObject,"a",{

value6

writable:true,

configurable:true,

enumerable: ture

})   // TypeError

configurable 修改成flash 是单向的,无法撤销

delete只用来删除对象的可删除属性。

var myObject = {

a2

}

myObject.a  //2

delete myObject.a;

myObject.a // undefined

3.enumerable    控制的是属性是否出现在对象的属性枚举中。

1.对象常量,结合writable: false configurable: false 就可以创建一个真正的常量属性

(不可修改,重定义或者删除)。

var myObject = {};

Object.defineProperty(myObject,"FAVORITE_NUMBER",{

value42

writable: false,

configurable: false

})

2.禁止扩展

禁止一个对象添加新属性并保留已有属性,可以使用Object.preventExtensions(...)

  var myObject = {

a:2

};

Object.preventExtensions(myObject);

myObject.b = 3;

myObject.a; // undefined

3.封存

Object.seal(...) 会创建一个 封存的对象,这个方法实际上会在一个现有对象上调用

Object.preventExtensions(...) 并把所有属性标记为configurable:false.

4.冻结

Object.freeze(...) 会创建一个冻结对象,这个方法实际上是会在一个现有对象上调用

Object.seal(...) ,还可以深度冻结一个对象。

GetterSetter

var  myObject = {

// a 定义一个getter

get a() {

return 2;

}

}

myObject.a = 3;

myObject.a;  // 2

由于只定义了 a getter,所以对a 的值进行设置时set 操作会忽略赋值操作,不会抛出错误。

通常来讲getter setter是成对出现的

var myObject = {

// a 定义一个getter

get a() {

return this._a_;

},

// a 定义一个setter

set a(val) {

this._a_ = val * 2;

}

};

myObject.a = 2;

myObject.a; // 2

存在性

可以在不访问属性的情况下判断对象中是否存在这个属性:

杨红律师网2.0
杨红律师网2.0

为使更多律师(或者律师事务所、会计师税务师等)能够快捷的拥有自己的网站,杨红律师将自己的网站源码模板分享给大家,本站系统采用sdcms系统,非为其做广告,而是感觉系统非常好用,模板是自己设计的,给大家提供出来。源码完整,此为V2.0版本,增加了近期采集的数据,优化部分模板。带完整数据,数据统计:法律法规:111篇; 法律研究:12419篇; 法律案例:296篇; 法律常识:4915篇。特色功能:

下载

var myObject = {

a2

}

("a" in myObject); // true

("b" in myObject); // false

myObject.hasOWnProper("a"); // true

myObject.hasOwnProperty("b"); // false

in 操作符会检查属性是否在对象及[[Prototype]]原型链中。

hasOwnProperty(...) 只会检查属性是否在myObject对象中。

判断属性是否可枚举:

var  myObject = {};

Object.defineProperty(

myObject,

"a",

// a像普通属性一样可枚举

{enumerable: true,value:2}

);

Object.defineProperty(

myObject,

"b",

// b 不可枚举

{enumerable: false,value:3}

)

myObject.propertyIsEnumberable("a"); // true

myObject.propertyIsEnumber("b"); // false

Object.keys(myObject);  // ["a"]

Object.getOwnPropertyName(myObject); // ["a","b"]

propertyIsEnumerable(...)  会检查给定的属性名是否直接存在于对象中(而不是在原型链)并且满足enumerable:true

Object.keys(...) 会返回一个数组,包含所有可枚举属性

Object.getOwnPropertyNames(...) 返回一个数组,包含所有属性,无论是否可枚举

 

遍历

 for .. in 可以用来遍历对象的可枚举属性列表

对于数值索引的数组来说,可以使用标准的for 循环

ES5 中新增的   forEach(..)  every(...)  some(..)

forEach(...) 会遍历数组中所有值并忽略回调函数的的返回值。

every(...) 会一直运行到回调函数返回false

some(...) 会一直运行到回调函数返回true

Es6 增加  for .. of 循环语法

  var myArray = [ 1,2,3];

  for(var v of myArray){

  console.log(v)

  }

普通的对象没有@@iterator,可以给任何想遍历的对象自定义

var myObject = {

  a:2,

  b:3

};

Object.defineProperty(myObject,Symbol.iterator,{

enumerable: false,

writable: false,

configurable: true,

value: function() {

var o = this;

var idx = 0;

var ks = Object.keys(o);

return {

next: function(){

value: o[ks[idx++]],

done:(idx > ks.length)

}

}

}

})

// 手动遍历myObject

var it = myObject[Symbol.iterator]();

it.next(); // {value2done: false}

it.next(); // {value3done: false}

it.next(); // {undefineddone: true}

// for..of 遍历myObject

for(var v of myObject){

  console.log(v)

}  // 2 // 3

 

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

29

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

11

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

8

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

55

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号