社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
单一的值
值和值之间没有关系
基本数据类型存在栈内存中 当比较两个基本数据类型时比较的就是值,就算赋值,一个值的变化不会影响另一个。
var a = 10;
var b = a;
a++;
console.log(a); //11
console.log(b); //10
String 字符串
Boolean 布尔
用于逻辑判断
NULL
Null类型的值只有一个 就是null
这个值专门是用来表示空对象
typeof null 返回的事object
var a = null
console.log(typeof a); //object
var a
console.log(typeof a); //undefined
在对象中可以保存多个不同数据类型的属性
引用类型存在堆内存中,当比较两个引用数据类型的值时,就是比较内存地址,如果两个对象一模一样,但是地址是不同的,比较返回的值为false。
var obj1 = new Object();
var obj2 = new Object();
obj1.age = 20;
obj2.age = 20;
console.log(obj1 == obj2); //false
赋值其实是把地址赋值
var obj1 = new Object();
obj1.age = 20;
var obj2 = obj1;
console.log(obj1.age);
console.log(obj2.age);
对象是保存在堆内存中,当创建(new)一个对象时,就会在内存中开辟一个新空间,而变量保存的是对象的内存地址(对象引用),如果两个对象保存的事同一个对象引用,那么通过一个变量修改属性,另一个也会受到影响。
Object
对象的分类:
创建对象:
var obj= new Object();
使用new关键字来调用函数,该函数是构造函数constructor。
构造函数是专门用来创建对象的函数。
对象的字面量:
var obj = {
uname: 'lyz',
age: 21
}
在创建对象时,直接指向对象的属性。(属性可以不加引号,但是有特殊的名字时,必须加引号。)
对象.属性名若无值,则返回undefined。
var obj = {
uname: 'lyz',
age: 21
}
console.log(obj.like); //undefined
使用函数声明创建函数
function f([a,b,...]) {
//代码
}
函数表达式
var f = function () {
console.log('f函数被调用了');
}
函数解析器不会检查实参的数据类型
如果实参的数量小于形参的数量,那么没有定义的为undefined。
return后的语句不再执行
return后无值返回undefined
函数也可以作为对象的属性
如果以后一个函数作为对象的属性保存,那么称这个函数为对象的方法,调用函数就是调用对象的方法。只是名称不同。
使用var声明的变量,会在所有的代码执行前声明,但不会赋值。但是声明变量前不用var,那么不能在执行前声明。
使用函数声明形式创建的函数,会在所有代码执行前,就被创建,所以在函数调用声明在函数声明之前。
使用函数表达式创建的函数,不会被提前声明,所以不能在函数创建前带调用。
f() // f函数被调用了
f2() // 报错
//函数声明
function f() {
console.log('f函数被调用了');
}
//函数表达式
var f2 = function () {
console.log('f2函数被调用了');
}
解析器在调用函数时,每次都会传入一个隐藏的形参,就是this。
this是一个对象 ,称函数执行的上下文对象。
调用函数的方式不同时,this的指向也不同。
function f() {
console.log(this);// window
}
f()
function f() {
console.log(this);// obj
}
var obj = {
uname: 'lyz',
like: f
}
obj.like();
var div = document.querySelector('div');
div.onclick = function () {
console.log(this); //<div></div>
}
setTimeout(function () {
console.log(this);
}, 10) //window
(function f() {
console.log(this);// window
})(); //前后都要加分号
function Per() {
this.uname = 'lyz';
console.log(this); // lyz
}
Per.prototype.speak = function () {
console.log(this); // lyz
}
var lyz = new Per();
lyz.speak();
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!