js 对象与json的区别和this 指向问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 对象与json的区别和this 指向问题相关的知识,希望对你有一定的参考价值。
构造函数。用来被new关键字调用的函数,这个函数返回指定属性的对象。
用new关键字来调用函数
new是是一个操作符,使用new操作符调用函数的时候,此时将会发生4个事情:
(1)创建一个空对象
(2)把函数内部的this指向这个空对象
(3)将顺序函数执行里面的语句
(4)返回这个对象
function fun(){
name : "小花" ,
age : 18 ,
sex : "女",
}
var xiaoming = new fun();
console.log(xiaoming);
//fun {name: "小花", age: 18, sex: "女"}
javascript基础之对象
对象只是带有属性和方法的特殊数据类型
javaScript 有内置对象比如 String、Date、Array 等等。
1:用字面量的方式创建,使用{}当做界定符号,里面用k-v对儿罗列所有属性
var obj = {
name : "小花" ,
age : 18 ,
sex : "女",
sayHello : function(){
console.log("我是" + this.name);
}
}
对象就是属性的无序集合
2:访问对象的属性
objectName.propertyName
objectName["propertyName"]
访问对象的方法
objectName.methodName()
var obj = {
name : "小花" ,
age : 18 ,
sex : "女",
sayHello : function(){
console.log("我是" + this.name);
}
}
console.log(obj.name);
console.log(obj[‘name‘]);
console.log(obj.sayHello);
console.log(obj[‘sayHello‘]);
console.log(obj.sayHello());
//小花
//小花
//函数
//函数
//我是小花
3:对象的字面量和JSON的关系
JSON没有声明变量这一说(JSON中没有变量的概念)
JSON末尾没有分号{}后面
JSON要求所有的键必须有双引号(单引号不行),而对象字面量不要求(当键的名字不符合标识符名字的时候必须加上双引号,英语字母、数字、_、$ ,不以数字开头)。
4:this
关键字
指向的是调用函数的那个对象
和调用有关和定义无关
(1)当用()调用的时候,指向的是window
function myfunction(){
console.log(this);
}
myfunction();
//Window {external: Object, chrome: Object, document: document, _ASYNC_START: 1500782356654, _chrome_37_fix: undefined…}
(2)dom元素事件处理程序的时候,指向的是dom对象
function myfunction(){
console.log(this);
}
div.onclick=myfunction;
//div
(3)当函数被setInterval、setTimeout调用的时候,函数里面的this是window对象
setInterval(myfunction,2000);
(4)当函数被当做某个对象属性被调用的时候,此时这个函数里面的this指的是这个对象
var obj = {
name : "小花" ,
age : 18 ,
sex : "女",
sayHello : function(){
console.log("我是" + this.name);
}
}
obj.sayHello();
(5)call和apply方法可以任意设置函数里面的this
函数.call(对象);
函数.apply(对象);
函数立即执行,且函数内部的this指向对象。
区别是传参:
sum.call(obj,1,2,3); // call必须要用逗号罗列所有参数
sum.apply(obj , [1,2,3]); // apply用数组罗列所有参数
(6)new 调用的函数。
this指的是系统内部创建的新对象
以上是关于js 对象与json的区别和this 指向问题的主要内容,如果未能解决你的问题,请参考以下文章