【Javascript Day9】对象定义、数组中对象元素排序、对象在内存中存储方法、对象构建联系
目录
[] 取值运算符 => 可用于数组下标或者对象属性的取值操作
. 取值运算符 => 用于对象属性或方法的调用操作
console.log( person.cardNo );
console.log( person.phone );
console.log( person.age );
console.log( person.name );
console.log( person.sex );
// 对象调对象方法后,可以直接通过 () 执行方法
person.say();
console.log("----------------------");
var person1 = {
// 对象属性
cardNo:"43234234234234234",
phone:"435345344",
age:32,
sex:"男",
name:"张三1",
// 对象方法
say:function(){
console.log("对象方法");
}
}
console.log( person1.name );
[] 取值运算符 => 可用于数组下标或者对象属性的取值操作
// 1. [] 取数组元素 -> [下标]
// 2. [] 取对象属性 -> ['属性名'] ["属性名"]
console.log( person1[ 'cardNo' ] );
// [] 取值运算符 的对象动态取值
var key = "cardNo"
// []中的属性名没有被引号报告,js会认为是变量
// console.log( person1[ cardNo ] );
// [] 中的变量如果对应的值,正好是对象中一个属性名,依然可以获取对象属性值
console.log( person1[ key ] );
key = "sex";
console.log( person1[ key ] );
// 对象循环:使用 for(var 变量名 in 被循环变量){} 循环
// 1. 循环的是对象,var 变量名 记录的是循环过程中,依次的对象属性名
for (var key in person1) {
console.log("for……in:",key, person1[ key ] );
}
// 2. 循环数组,var 变量名 记录的是循环过程中,依次的数组元素下标
var nums = [11,22,33,44,55,66];
for (var index in nums) {
console.log("for……in:",index, nums[ index ] );
}
数组对象的排序
按照对象中source大小来排序数组对象元素然后输出
var students = [
{
name:"Jeanne",
source:67
},
{
name:"Fredrick",
source:78
},
{
name:"Kimberly",
source:56
},
{
name:"Mackenzie",
source:91
}
]
for (var i = 0; i < students.length; i++) {
for (var j = 0; j < students.length - 1 -i; j++) {
if( students[j].source > students[j+1].source ){
var temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
for (var i in students) {
console.log( students[i]["name"],students[i].source );
}
对象在内存中存储方式
// 1. 基本数据类型(简单数据类型)
// String Number Boolean null undefined
// 2. 复杂数据类型(引用数据类型)
// Array 数组
// Object 对象
// 对象在内存中存储分为两个部分
// 对象变量名和指向地址存在在 栈中
// 对象的值存在堆中
var user = {
name:"tom",
age:23
}
// 引用赋值 = 赋值的是栈中的地址
var user1 = user;
user1.name = "jack";
console.log( user,user1 );
function setParams(obj){
obj.a = 999;
}
var obj = {
a:1
}
setParams(obj)
console.log(obj);
对象的三种定义方式
1. 字面量对象
/*
对象构建也被叫做 键值对 对象定义
var 对象变量 = {
属性名:属性值,
key:value,
……
}
*/
var user = {
name:"tom",
say:function(){
console.log(say);
}
}
console.log( typeof user );
2. 基于Object构造对象
// Object 是JS提供的一个对象默认构造器
// + 构造器 => 对象创建的方法 => 被叫做构造方法
// !! 普通方法通过 普通方法() 调用
// !! 构造方法通过 new 构造方法名() 调用
/*
var 对象名 = new Object();
*/
var stu = new Object();
console.log( typeof stu );
// 构造器构成对象默认是空对象
console.log( stu );
// 构建的空对象可以通过 对象属性、对象方法 调用方式进行赋值
// 对象属性操作,
// 如果属性、方法 存在 属于赋值、取值、调用
// 如果属性、方法 不存在 会进行创建,后续操作依然是赋值、取值、调用
console.log( stu.name ); // 对象中不存在改属性,返回 undefined
stu.name = "张三";
console.log( stu );
stu.show = function(){
console.log("对象方法");
}
stu.show();
3. 自定义对象构造器创建对象
// + 构造器的定义语法和方法定义语法是一致
// + js function 关键字存在二义性
// 程序语法:对应语言严格要求的语法格式 => 程序报错
// 约定语法:程序员之间一种默契代码书写格式 => 不影响程序运行
// 约定语法中:JS的 构造函数 首字目 大写
function Person( name,age,sex ){
// this 是 内置的 构造关键字 ,关键字用于指代创建的对象
// console.log( this );
this.name = name;
this.age = age;
this.sex = sex
}
var person1 = new Person("张三",23,"男");
console.log(person1,typeof person1);
var person2 = new Person("韩梅梅",33,"女");
console.log(person2,typeof person2);
var person3 = new Person("豆豆",33,"男");
console.log(person3,typeof person3);
对象的构建练习
// 定义一个学生数组,要求循环录入4个学生,学生信息包含名称和成绩,录入完成后循环打印
var stus = [];
for (var i = 0; i < 4; i++) {
var name = prompt(`请输入第${i+1}个学生的姓名`)
var source = prompt(`请输入第${i+1}个学生的成绩`)
// var temp = {
// name:name,
// source:source
// }
// stus.push( temp );
stus.push( {
stuname:name,
source:source
} )
}
for (var i in stus) {
console.log(`姓名:${stus[i].stuname},成绩:${stus[i].source}`);
}
原文地址:https://blog.csdn.net/clp20031101/article/details/145187683
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!