听课笔记(六)

删除对象的属性   

   delete obj.属性

若属性值为undefined则会报出undefined不会报错

返回true

对象的创建方法

1.    var obj   = { }     plainObject   对象字面量(对象直接量)

2.   构造函数

               1)系统自带的构造函数   new Object ();,  

               2)自定义   规则  命名(大驼峰命名法)

                  

构造函数的内部原理  

扫描二维码关注公众号,回复: 2775531 查看本文章

                1.在函数体的最前面隐士=式的加上this = {};

                2.执行 this.xxx = xxx;

                3.隐式的返回this

function Student (name, age, sex) 
{
	// var this = {
         // name :"";
         // age : "";
         // sex : "";
	// }
	this.name = name;
	this.age = age;
	this.sex =sex;
	// return this
}

包装类  (Number String Boolean)

原始值没有属性和方法

var num = 4;
num.len = 3;
//new Number(4).len = 3; delete
console.log(num.len);//undefined
var str = 'abcd';
str.length = 2;
console.log(str);//abcd
var number = [1,2,3,4,5];
number.length = 2;
console.log(number);//[1,2]

undefined和unll没有属性值,不能添加 undefined.属性=xx

例题

function test(){
	var arr = [];
	for(var i = 0;i < 10; i++) 
	{
	arr [i] = function () {
	document.write(i + " ");
	}
	return arr;
	}
}
var myArr = test();
for(var j = 0;j < 10; j++) 
{
	myArr [j]();
}

结果   全部都是10

原因:  在函数执行test的时候,arr[i]l里面都存的函数,但是没有执行里面的函数,执行myArr的时候,才回去找i的值,这个时候i已经变成了10

function test(){
	var arr = [];
	for(var i = 0;i < 10; i++) 
	{
	(function(j){
	    arr [i] = function () {
	document.write(i + " ");
	}
	}(i))
	
	return arr;
	}
}
var myArr = test();
for(var j = 0;j < 10; j++) 
{
	myArr [j]();
}

若把里面的函数变成立即执行函数,就会得到0 1 2 3 4 5 6 7 8 9

猜你喜欢

转载自blog.csdn.net/weixin_40518538/article/details/81216524
今日推荐