js中对象和面向对象与Json介绍


Posted in Javascript onJanuary 21, 2019

ECMA-262 把对象(object)定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。

面向对象语言的要求

一种面向对象语言需要向开发者提供四种基本能力:

  1. 封装 - 把相关的信息(无论数据或方法)存储在对象中的能力
  2. 聚集 - 把一个对象存储在另一个对象内的能力
  3. 继承 - 由另一个类(或多个类)得来类的属性和方法的能力
  4. 多态 - 编写能以多种方法运行的函数或方法的能力

对象的创建和销毁都在 JavaScript 执行过程中发生,理解这种范式的含义对理解整个语言至关重要。

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...

此外,JavaScript 允许自定义对象。

JavaScript 对象

JavaScript 提供多个内建对象,比如 String、Date、Array 等等。

对象只是带有属性和方法的特殊数据类型。

访问对象的属性

属性是与对象相关的值。

访问对象属性的语法是:

objectName.propertyName

这个例子使用了 String 对象的 length 属性来获得字符串的长度:

var message="Hello World!";
var x=message.length;  //  12

访问对象的方法

方法是能够在对象上执行的动作。

您可以通过以下语法来调用方法:

objectName.methodName()

这个例子使用了 String 对象的 toUpperCase() 方法来将文本转换为大写:

var message="Hello world!";
var x=message.toUpperCase();  //  HELLO WORLD!

创建 JavaScript 对象

通过 JavaScript,您能够定义并创建自己的对象。

创建新对象有两种不同的方法:

  1. 定义并创建对象的实例
  2. 使用函数来定义对象,然后创建新的对象实例

方式一:实例

<script>
  var person=new Object();
  person.firstname="Bill";
  person.lastname="Gates";
  person.age=56;
  person.eyecolor="blue";
  document.write(person.firstname + " is " + person.age + " years old.");
</script>

js中对象和面向对象与Json介绍

替代语法(使用对象 literals):

方式二:实例

<script>
  var person={firstname:"Bill",lastname:"gates",age:56,eyecolor:"blue"}
  document.write(person.firstname + " is " + person.age + " years old.");
</script>

方式三:使用对象构造器

js中对象和面向对象与Json介绍

本例使用函数来构造对象:

<script>
  function person(firstname,lastname,age,eyecolor){
  this.firstname=firstname;
  this.lastname=lastname;
  this.age=age;
  this.eyecolor=eyecolor;
  }
 //创建对象
  var myFather = new person("Bill","Gates",56,"blue");
  document.write(myFather.firstname + " is " + myFather.age + " years old.");
</script>

创建 JavaScript 对象实例

一旦您有了对象构造器,就可以创建新的对象实例,就像这样:

var myFather=new person("Bill","Gates",56,"blue");
var myMother=new person("Steve","Jobs",48,"green");

把属性添加到 JavaScript 对象

您可以通过为对象赋值,向已有对象添加新属性:

假设 personObj 已存在 - 您可以为其添加这些新属性:firstname、lastname、age 以及 eyecolor:

person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
var x=person.firstname;
console.log(x);  //  Bill

把方法添加到 JavaScript 对象

方法只不过是附加在对象上的函数。

在构造器函数内部定义对象的方法:

<script>
  function person(firstname,lastname,age,eyecolor){
    this.firstname=firstname;
    this.lastname=lastname;
    this.age=age;
    this.eyecolor=eyecolor;
    this.changeName=changeName;
  // 构造器中定义函数
    function changeName(name){
      this.lastname=name;
    }
}
//创建对象    
var myMother=new person("Steve","Jobs",56,"green");
myMother.changeName("Ballmer");
document.write(myMother.lastname);  //  Ballmer
</script>

JavaScript 类

JavaScript 是面向对象的语言,但 JavaScript 不使用类。

在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。

JavaScript 基于 prototype,而不是基于类的。

JavaScript for...in 循环

JavaScript for...in 语句循环遍历对象的属性。

for (对象中的变量){
 要执行的代码
}

注释:for...in 循环中的代码块将针对每个属性执行一次。

实例

循环遍历对象的属性:

<script>
 // function myFunction(){
    var x;
    var txt="";
    var person={fname:"Bill",lname:"Gates",age:56}; 
    //遍历对象
    for (x in person){
      //将遍历的结果封装到txt中
       txt=txt + person[x];
    }
  console.log(txt);  //  BillGates56
 // }
</script>

对象字面量

js中对象和面向对象与Json介绍

js中对象和面向对象与Json介绍

函数的调用:obj2.sayHi();

var obj = {aaa: 111};           varjson = {“aaa”:111};

对象字面量定义方法和json很像,只有一点不同,json的key要求必须加“”;

js中对象和面向对象与Json介绍

Json组成

Var json = {“aaa”: 1,“bbb”: 2,“ccc”: 3,“ddd”: 4}

Json由{}和key:value以及逗号组成,三部分。(只有一个键值对key:value时,可以没有逗号)

Json数据格式(重要)

json是一种与语言无关的数据交换的格式,作用:

1.使用ajax进行前后台数据交换

2.移动端与服务端的数据交换

1.Json的格式与解析

json有两种格式:

1)对象格式:{"key1":value,"key2":value,"key3":value...}

2)数组/集合格式:[obj,obj,obj...]

例如:user对象 用json数据格式表示(user对象里面有4个属性)

{"username":"zhangsan","age":28,"password":"123","addr":"北京"}

List<Product> 用json数据格式表示(集合里面有3个paoduct对象)

[{"pid":"10","pname":"小米4C"},{},{}]

注意:对象格式和数组格式可以互相嵌套

      json的key是字符串  json的value是Object(json的值可以为函数)

json的解析:

json是js的原生内容,也就意味着js可以直接取出json对象中的数据

var person = {"firstname":"张","lastname":"三丰","age":100};
  //取出lastname
  alert(person.lastname);
  //取出age
  alert(person.age);
</script>

参数和传值问题

一、简单类型数据做参数,函数内部对参数的修改不应影响外部变量简单类型传数值。

二、复杂类型数据做参数,函数内部对参数的修改会应影响外部变量复杂类型传地址。

js中对象和面向对象与Json介绍

如有不足请多多指教!希望给您带来帮助!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
JavaScript 三种创建对象的方法
Oct 16 Javascript
关于document.cookie的使用javascript
Oct 29 Javascript
js 限制input只能输入数字、字母和汉字等等
Dec 18 Javascript
js showModalDialog参数的使用详解
Jan 07 Javascript
使用js画图之饼图
Jan 12 Javascript
使用Chrome浏览器调试AngularJS应用的方法
Jun 18 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 Javascript
微信小程序实现滑动切换自定义页码的方法分析
Dec 29 Javascript
微信小程序云开发之数据库操作
May 18 Javascript
react中hook介绍以及使用教程
Dec 11 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
Jan 21 #Javascript
JavaScript常用事件介绍
Jan 21 #Javascript
JavaScript使用闭包模仿块级作用域操作示例
Jan 21 #Javascript
JavaScript闭包与作用域链实例分析
Jan 21 #Javascript
js中事件对象和事件委托的介绍
Jan 21 #Javascript
JavaScript作用域链实例详解
Jan 21 #Javascript
Jquery的Ajax技术使用方法
Jan 21 #jQuery
You might like
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python中的rfind()方法使用详解
2015/05/19 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
Python制作词云图代码实例
2019/09/09 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
运动会演讲稿100字
2014/08/25 职场文书
委托书范本
2014/09/13 职场文书
护士个人年终总结
2015/02/13 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python