ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

理顺 JavaScript (13) - 对象及 json

2021-04-29 21:52:35  阅读:157  来源: 互联网

标签:13 JavaScript obj 对象 Object 88 alert json marriage


   理顺 JavaScript (13) - 对象及 json    


和 Delphi/C# 类似, JavaScript 中所有对象的祖先是 Object, 虽然并不是全部面向对象的, 好像也是基于对象的.
譬如一个字符串类型(string)变量, 可以使用字符串对象(String)的属性和方法, 那是在调用的一瞬间转换成了对象.

建立原始空对象的两种方法


var obj1, obj2;
obj1 = new Object();
obj2 = {};

alert(obj1); // [object Object] - 属于 Object 类的 object
alert(obj2); // [object Object]

//上面两种方法建立的对象都可以使用以下六个方法(不如说是抽象方法):
hasOwnProperty
isPrototypeOf
propertyIsEnumerable
toLocaleString
toString
valueOf

//Object 像不像个接口? 像也不像, 因为以上方法它并不强迫子类实现.


//现在应该让人立马想起空数组的两种建立方法:
var arr1, arr2;
arr1 = new Array();
arr2 = [];

//Array 作为 Object 的子类, 继承或重新实现了上面方法, 并且增加了 sort 等更多数组专用的方法.

//一个是 {}、 一个是 [], 很有意思; 更有意思的是它们可以互相包含.


定义自己的对象


//已存在 Array、Number、Date、RegExp 等实用的类(或叫对象模板), 如果构建自己的类呢?
//很简单, 但不好理解:

function Rectangle(w, h) {
  this.w = w;
  this.h = h;
}

/* 实例化一个 */
var myObj = new Rectangle(11, 22);
alert(myObj.w); //11
alert(myObj.h); //22
alert(myObj);   // [object Object]

//可以看出 myObj 就是一个对象了; 在 js 中函数也是对象, 并且有一个 Function 类存在.

//可以在 Rectangle(函数? 类?) 的基础上继续添加更多方法或属性, 这是后话.


JavaScript Object Notation - json


//js 用 {} 标识对象的方法(JavaScript Object Notation)被简称为 json;
//说到 json, 佩服其的设计者, 本来是语言中描述对象的一种规则, 现在竟被推崇为超越 XML 的数据格式.

var obj = {name:'张三', age:88, marriage:true};

//{} 中的数据用 , 号隔开, 每个数据又是 Name : Value 的形式;
// : 前面的标识符是比不可少的, 它将是对象的属性或方法等, 它也可以在引号中, 也支持中文.

/* 访问 Value 方法一 */
alert(obj.name);     //张三
alert(obj.age);      //88
alert(obj.marriage); //true

/* 访问 Value 方法二 */
alert(obj['name']);     //张三
alert(obj['age']);      //88
alert(obj['marriage']); //true

/* 遍历 Value */
for (var k in obj) {
  alert(obj[k]);      //张三 / 88 / true
}

/* 遍历 Name */
for (var k in obj) {
  alert(k);           //Name / age / marriage
}

//对象还可以继续包含对象, 再连同数组互相嵌套, 因而 json 能表达非常复杂的数据结构.


给自定义的类添加方法


var obj = {
  name : '张三', 
  age : 88, 
  marriage: false,
  info: function() {return this.name + '今年 ' + this.age + ' 岁, ' + (this.marriage ? '已经结婚了.' : '至今未婚.')}
};

alert(obj.info());    //张三今年 88 岁, 至今未婚.
alert(obj['info']()); //张三今年 88 岁, 至今未婚.

obj.name = '李四';
obj.age = 18;
obj.marriage = true;

alert(obj.info()); //李四今年 18 岁, 已经结婚了.

//还有其他方法, 后续.



标签:13,JavaScript,obj,对象,Object,88,alert,json,marriage
来源: https://blog.51cto.com/u_14617575/2743758

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有