在某网课学习前端笔记整理js篇19-js对象、this指针、对象的一些方法

js对象、this指针、对象的一些方法

js对象

javascript中一切都是对象(数组、字符、数字、布尔、正则、日期)。

example1

var obj = new Object();//构造函数写法
obj.name = 'xiaohong';
obj.sex = 'female';
obj.say = function(){console.log("hello")}
console.log(obj.name);//xiaohong
console.log(obj['name']);//xiaohong
obj.say();//hello

var obj2 = {
  name:'xiaoming',
  'sex':'female',
  say:function(){console.log('hello')}
}//字面量写法 json数据格式
console.log(obj2.name);//xiaoming 	对象 + . + 属性名
console.log(obj2['name']);//xiaoming	对象 + [ + ' + 属性名 + ' + ]

obj = null; //释放没有引用指向的对象占用的内存。

console.log(typeof new String('123'));//object

​ js中新建一个对象可以通过new或者{}来创建,使用后者比较方便。

example2

var obj = {
  'name':'aa',
  'sex':'male',
  'e-mail':'[email protected]'
}
console.log(obj['e-mail']);//[email protected]
console.log(obj.e-mail);//报错

na = 'name';
console.log(obj[na]);

​ 对象属性的引用用方括号和点差不多,但方括号引用可以引用一些特殊情况的字符,比如空格,减号等。而且点方法引用属性可以引用变量。

this指针

this指针在21总结中有说过,这里仅做一些补充。记住,this谁调用的指向谁

example3

var name = 'outer';
var obj = {
  name:'inner',
  log:function(){
    function fn(){console.log(this.name)}
    return fn;
  },
  log2:function(){
   console.log(name);
   console.log(this.name);
  }
}
obj.log()();//outer
obj.log2();//inner outer
var log = obj.log2;
log();//outer outer   	这里相当于window.log()。

对象的一些方法

example4

function Person(){}
Person.prototype.name = 'x';
var person = new Person();
person.sex = 'man';

console.log('name' in person);//true
console.log('sex' in person);//true
console.log(person.hasOwnProperty('name'));//false
console.log(person.hasOwnProperty('sex'));//true

delete person.sex;
delete person.name;
console.log(person.name);//x
console.log(person.sex);//undefined

example5

var data1 = {
  a:1,
  b:2
}
var data2 = {
  c:3,
  a:4
}
var data3 = {
  d:5,
  f:6
}
//合并对象重复的属性
function combine(target,source){
  var args = arguments;
  if(args.length === 1) return target;
  var index = 1;
  while(source = args[index++]){
    for(var k in source) if(source.hasOwnProperty(k)){
      target[k] = source[k];
    }
  }
  return target;
}
console.log(combine({},data1,data2,data3));//{a: 4, b: 2, c: 3, d: 5, f: 6}

//使用Object的assign方法同样可以实现。
console.log(Object.assign({},data1,data2,data3));//{a: 4, b: 2, c: 3, d: 5, f: 6}

hasOwnProperty()是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。而in则可以检查到该对象的原型链中是否具有该属性。for...in可以用来遍历对象属性。delete 可以删除对象中的属性和方法(不能删除原型链上的属性).

发布了27 篇原创文章 · 获赞 0 · 访问量 153

猜你喜欢

转载自blog.csdn.net/qq_34338676/article/details/104715605