发表于: 2020-04-08 22:09:35

0 1841


一、今天完成的事情

//创建对象
/*
* 使用new 关键字调用的函数,是构造函数constructor
* 构造函数是专门用来创建对象的函数
* 使用typeof检查一个对象时,会返回object
* */
var obj = new Object();
/*
* 在对象中保存的值为属性
* 向对象添加属性
* 语法:对象.属性名 = 属性值;
* */
//向 obj 添加一个name属性
obj.name = "孙悟空";
//向obj添加一个gender属性
obj.gender = "男";
//向obj添加一个age属性
obj.age = 18;
console.log(obj);
/*
* 读取对象中的属性
* 语法:对象.属性名
* 如果读取对象中没有的属性,不会报错,而是返回undefined
* */
console.log(obj.age);
/*
* 修改对象的属性值
* 语法: 对象.属性名 = 新值
* */
obj.age = 20;
console.log(obj.age);
/*
* 删除对象的属性
* 语法: delete 对象 = 属性名
* */
delete obj.age;
console.log(obj.age);
/*
* 向对象中添加属性
* 属性名
* - 对象的属性名不强制要求遵守标识符的规范
* 什么乱七八糟的名字都可以使用
* - 但是我们使用是还是尽量按照标识符的规范去做
* */
/*
* 如果使用特殊的属性名,不能使用 . 的方式来操作
* 需要使用另一种方式
* 语法:对象[“属性名” ] = 属性值 中括号不是大括号
* 读取时也要采用这种方式
*
* 使用 [ ] 这种形式去操作属性,更加的灵活,
* 在 [] 中可以直接传递一个变量,这样变量值是多少就会读取那个属性
*
*
*
* */
obj["123"] = 789;
console.log(obj[123]);
var n = 123;
console.log(obj[n]);
/*
* 属性值
* js 对象的属性值,可以是任何的数据类型
* 甚至也可以是一个对象
* */
/*
* in 运算符
* - 通过该运算符可以检查一个对象是否含有指定的属性
* 如果有则返回true ,没有则返回false
* - 语法:
* “属性名”in 对象
* */
//检查obj中是否含有test2 属性,是否含有 name 属性
console.log("test2"in obj);
console.log("name"in obj);
基本数据类型保存的是值,引用数据类型保存的是引用或者说是地址
/*
* 基本数据类型和引用数据类型
* 五个基本数据类型
*
* 引用数据类型
* Object
*
* JS 中的变量都是保存到栈内存里的
* 基本数据类型的值直接在栈内存内存储
* 值与值之间是独立存在,修改一个变量不会影响其他的变量
*
* 对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间
* 而变量保存的是对虾干的内存地址(对象的引用),如果两个变量保存的是同一个对象引用
* 当一个通过一个变量改变属性时,另一个也会受到影响
*
*
*
* */
var a = 123;
var b = a ;
a++;
console.log(a);
console.log(b);
var obj1 = new Object();
obj1.name = "tom";
var obj2 = obj1;
//修改obj的name属性,输出也随之改变
obj1.name="job";
// console.log(obj1.name);
// console.log(obj2.name);
//设置obj2 为null
obj2 = null;
/*
* 当比较两个基本数据类型的值时,就是比较值
* 而比较两个引用数据类型时,它是比较的对象的内存地址
* 如果两个对象是一模一样的,但是地址不同,他也会返回false
* */
console.log(obj1);
console.log(obj2);
var obj3 = new Object();
obj3.name = "沙和尚";
var obj4 = new Object();
obj4.name = "沙和尚";
console.log(obj3 == obj4);//返回false ,因为两个对象的地址不一样
对象字面量
/*
* 对象字面量
* */
//创建一个对象
var dui = new Object();
/*
* 使用对象字面量来创建一个对象
* */
// var xiang = {};
// xiang.name = "啊啊";
// console.log(xiang.name);
/*
* 使用对象字面量可以在创建对象时,直接指定对象中的属性
* 语法:{属性名:属性值,属性名:属性值,属性名:属性值……}
* 对象字面量的属性名可以加引号,也可以不加,建议不加
* 如果要使用一些特殊的名字,则必须加引号
*
* 属性名和属性值是一组的名值对结构
* 名和值之间使用:(冒号)连接,多个名值对之间使用,(逗号)隔开
* 如果一个属性之后没有其他的属性了,就不要写,(逗号)
* */
var xiang = {
name:"啊啊啊",
age:18,
gender:"男",
test:{
name:"666"
}
};
console.log(xiang);
我们在创建新的函数时,有三种方法,但是我们一般不会用构造函数的方法来创建新的函数,一般情况下会使用函数声明或者函数表达式来创建一个新的函数
/*
* 函数的简介
* 函数
* - 函数也是一个对象
* - 函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码)
* - 函数中可以保存一些代码在需要时调用
* */
//我们在实际开发中很少使用构造函数来创建一个函数对象
//创建一个函数对象
//可以将要封装的代码以字符串的形式传递给构造函数
var fun = new Function ("console.log('hello 这是我第一个函数');");
//封装到函数中的代码不会立即执行
//函数中的代码会在函数调用的时候执行
//调用函数语法:函数对象()
//当调用函数时,函数中封装的代码会按照顺序执行
fun();
console.log(fun);
/*
* 使用函数声明来创建一个函数
* 语法:
* function 函数名([形参1,形参2,形参3……形参N ]){
* 语句……
* }
*
* */
function fun2() {
console.log("这是我的第二个函数");
alert("hahah");
document.write("121313514351");
}
fun2();
console.log(fun2);
/*
* 使用函数表达式来创建一个函数
* var 函数名 = function([ 形参1,形参2,形参3……形参N ]){
* 语句……
* }
* */
var fun3 = function() {
console.log("我是匿名函数中封装的代码");
};
fun3();
函数的参数
/*
* 函数的参数
* 定义一个用来求两个数和的函数
* 可以在函数()中指定一个或多个形参(形式参数)
* 多个形参之间使用,(逗号)隔开,声明形参就相当于在函数内部声明了对应的变量
* */
function sum(a,b) {
console.log(a+b);
}
/*
* 在调用函数时,可以在()中指定实参(实际参数)
* 实参会赋值给函数中对应的形参
* */
sum(236,584);
/*
* 调用函数时,解析器不会检查实参的类型
* 所以要注意,是否有可能会接收到非法的参数,如果有可能则需要对参数进行类型的检查
* 函数的实参可以是任意的数据类型
* */
/*
* 调用函数时,解析器也不会检查实参的数量
* 多余的实参不会被赋值
* 如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
* */
函数的返回值
/*
* 函数的返回值
*
* */
/*
* 创建一个函数,用来计算三个数的和
*
* 可以使用return来设置函数的返回值
* 语法:
* return 值
* return 后的值将会作为函数的执行结果返回
* 可以定义一个变量来接收该结果
*
* 在函数中,return之后的语句都不会执行
*
* 如果return函数语句后不跟任何值,就相当于返回undefined
* 如果函数中不写return 也返回undefined
*
* return后可以跟任意类型的值
* */
function sum1(a,b,c) {
alert(a + b + c);
var d = a+ b+c;
return d;
}
//调用函数
//变量return 的值就是函数的执行结果
//函数返回什么result的值就是什么
var result = sum(1,2,3);


二、明天要做的事情

三、遇到的困哪

四、收获



返回列表 返回列表
评论

    分享到