对象
所有的函数都继承自对象
说一下对构造函数,原型,实例的理解/谈一谈原型,原型链?
1.每一个构造函数中都有一个原型对象
2.每一个Object构造函数有一个prototype属性 prototype属性的内存地址指向Object构造函数的原型对象prototype
3.同时prototype原型对象中有一个constructor方法指向Object构造函数
4.obj实例中并没有写toString()和valueOf()方法,可是它可以调用,是因为obj实例可以继承Object构造函数原型对象的方法来使用。(从原型链来继承)
5.obj实例可以使用它的构造函数的原型对象中的实例和方法,为什么?
将Object构造函数比作目前,其产生的原型对象比作父亲,实例是儿子(由母亲产生 也就是OBject构造函数,obj由new Object()产生),这样理解,儿子可以用父亲所拥有的东西。儿子什么都没有,但是儿子可以问父亲要。
obj实例内有name属性。age属性,除了可以访问这两个属性,它还可以访问toString(),valueOf()。
Object
对象的创建
构造函数表示法
var obj = new Object(); //{}
对象字面量表示法
var obj2 = {};
添加
obj2.name = ‘’;
修改(属性已经存在)
obj2.name = ‘’;
删除
delete obj2.name;
访问
obj2.name
obj2[‘name’]
var a = ‘name’;
obj[a]
遍历
for(var key in obj){
key–>属性名
obj[key]–>对应的属性值
}
对象方法
var obj = {
name:‘zhangsan’,
age:12,
//放在对象内的函数叫方法
sayName:function(){
console.log(1);
console.log(this.name);// 问:this是什么?此时this指向谁?this是函数内的一个方法,代表函数得执行环境。this指向函数的执行环境,谁调用指向谁。如果没有调用的 就指向全局环境。
}
};
obj.name
obj.sayName //函数 此时只是访问了一下这个函数
obj.sayName() //运行obj.sayName函数
function test(){}
test //函数的名字 function
运行函数
函数名()
test()
前后端进行数据交互
前端 js的数据类型 中国话
JSON字符串 将前端的对象数组转成json字符串
JSON.stringify(obj) //将前端的对象数组转成json字符串
获取到了后台给的json字符串,需要转换成前端的对象或者数组
JSON.parse(jsonStr)
后台 Java的数据类型 印度话
JSON字符串 将后台的对象或者数组集合转成json字符串
函数
函数声明2种方式
1.函数声明
function test(形参列表){}
2.函数表达式声明(匿名函数)
var test = function(){}
函数声明会提升到代码最前边,函数不执行,在调用函数的时候,函数执行。
上述并不准确,当var声明的变量即声明又初始化,那么此时变量优先级高于函数,如果var变量只是声明或初始化,那么此时函数的优先级高于变量。