创建对象的三种方式:
1.利用字面量创建对象
1.1创建
🅰
var 对象名 = {
属性:属性值,
方法:function(){。。}
}
注意:符号
是逗号,不是分号
冒号与等号
var star = {
name : 'pink',
age : 18,
sex : '男',
sayHi : function(){
alert('大家好啊~');
}
};
1.2 使用
🅱
对象 . 属性
对象 [ ’ 属性 ’ ] // 有则为属性值 无则为 false
对象 . 方法名();
console.log(star.name) // 调用名字属性
console.log(star['name']) // 调用名字属性
star.sayHi(); // 调用 sayHi 方法,注意,一定不要忘记带后面的括号
2.利用 new Object 创建对象
2.1 创建
🅰
var 对象名 = new Object();
对象名 . 属性名 = 属性值 ;
对象名 . 方法名 = function(){}
// 创建空对象
var andy = new Object();
// 给空对象添加属性和方法
andy.name = 'pink';
andy.age = 18;
andy.sex = '男';
andy.sayHi = function(){
alert('大家好啊~');
}
2.2 使用
🅱
对象.属性 = 值;
3.利用构造函数创建对象
3.1构造函数
🅰 封装
function 构造函数名(形参1,形参2,形参3) {
this.属性名1 = 参数1;
this.属性名2 = 参数2;
this.属性名3 = 参数3;
this.方法名 = 函数体;
}
3.2 构造函数的调用格式
🅱
var obj = new 构造函数名(实参1,实参2,实参3) // obj 是一个对象
遍历对象 for …in
for…in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
in : 如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。
- variable
在每次迭代时,variable会被赋值为不同的属性名。 - object
非Symbol类型的可枚举属性被迭代的对象。
for (variable in object){
//执行
}
for (var k in obj){
console.log(k); //输出的是 属性名
console.log(obj[k]); //输出的是 属性值
}
案例
有一个对象 来判断是否有该属性
// 有一个对象 来判断是否有该属性 对象['属性名']
var o = {
age: 18
}
if (o['sex']) { //访问对象的属性的一种调用方式:对象名['属性名']
console.log('里面有该属性');
} else {
console.log('没有该属性');
}
判断一个字符串 ‘abcoefoxyozzopp’ 中出现次数最多的字符,并统计其次数。
// 判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。
// o.a = 1
// o.b = 1
// o.c = 1
// o.o = 4
// 核心算法:利用 charAt() 遍历这个字符串
// 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
// 遍历对象,得到最大值和该字符
var str = 'abcoefoxyozzopp';❣
var o = {}; //使用对象来存储每个字符 💛
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); // chars 是 字符串的每一个字符💛
if (o[chars]) { // o[chars] 得到的是属性值💛 对象[属性名] = 属性值
o[chars]++;
} else {
o[chars] = 1;
}
}
console.log(o); //a: 1、b: 1、c: 1、o: 4、e: 1、f: 1、x: 1、y: 1、z: 2、p: 2
// 2. 遍历对象❣
var max = 0;
var ch = '';
// for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
for (var k in o) { //💛如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。
// k 得到是 属性名
// o[k] 得到的是属性值
if (o[k] > max) {
max = o[k];
ch = k;
}
}
console.log(max);
console.log('最多的字符是' + ch);