一、对象
1、用已学的知识,描述一下你心目中的对象
2、属性的增(obj.smoke、obj[‘smoke‘])、删(删除属性之后再去查找返回undefined。以前的变量未经声明去查找会报错,当一个对象的属性没有会打印undefined)、改、查
1 var mrFan ={ 2 name:‘mrFan‘, 3 age:26, 4 sex:‘male‘, 5 health:100, 6 smoke:function(){ 7 console.log(‘I am smoking!‘); 8 this.health--; 9 }, 10 drink:function(){ 11 console.log(‘I am drinking!‘); 12 this.health++; 13 } 14 } 15 console.log(mrFan) 16 mrFan.wife(‘xiaoyou‘)//对象增加属性 17 mrFan.age=27//对象修改属性 18 console.log(mrFan.health)//对象查找属性 19 delete mrFan.sex //对象删除属性
3、对象的创建方法
a:字面量
var obj = {} plainObject 对象字面量/对象直接量
b:构造函数
(1)、系统自带 new Object();Array();Number();Boolean();String();Date()
(2) 、自定义(利用构造函数,car和car1虽然用得是同一个构造函数,但是两个是独一无二的,互不影响)大驼峰命名规则
1 function Car(){ 2 this.name = ‘BMW‘; 3 this.height = ‘1400‘; 4 this.lang = ‘4900‘; 5 this.weight = 1000; 6 this.health = 100; 7 this.run = function(){ 8 this.health --; 9 } 10 11 } 12 13 var car = new Car(); 14 var car1 = new Car(); 15 car.name = ‘maserati‘; 16 car1.name = ‘Merz‘
利用new操作符的才叫构造函数,那么new操作符具体干了什么?
@创建一个空对象,并且this变量引用该对象,同事还继承了该函数的额原型
@属性和方法被加入到this引用的对象中
@新创建的对象由this引用,并且最后隐式的返回this
构造函数的内部原理?
@只要函数执行时遇见了new,就会有以下三步的执行
@在函数体最前面隐式的加上this={}
@执行this.xx = xx
@隐式的返回this(单凡用new,不能返回原始值,只能返回对象)
c:Object.create(原型)方法
二、包装类
1、基本包装类型(原始值):
特性:原始值没有属性和方法,不能给原始值赋属性值
var num = 4;
num.len = 3; //首先看到此句给原始值赋值,是违法语法规则的,所以使用包装类来解决
//会隐式的加上new Number(4).len = 3; delete
//new Number(4).len; 此处的new与上面不是一个,上面已经销毁了,这里就没有len属性了
console.log(num.len)//undefine(已经被删除了)数字没有length属性
var str = ‘abcd‘
str.length = 2
会隐式的加上new String(str).length = 2; delete
console.log(str)//abcd
console.log(str.length)//字符串是有length属性的
1 var str = ‘abc‘; 2 str +=1; 3 var test = typeof(str); 4 if(test.length==6){ 5 test.sign = ‘typeof的返回结果可能是String‘ 6 } 7 console.log(test.sign)//undefined
1 var x = 1; 2 if(function f(){}) { // 注意:function外面加了括号,所以变成了表达式, 3 // 所以就可以立即执行了,在执行后就再也找不到它了 4 x += typeof f; // 这时的f是找不到的(f is not defined), 5 //一般这时系统会报错,但是唯独typeof,会返回字符串 6 } 7 console.log(x);//“undefined”
1 function Person(name,age,sex) { 2 var a = 0; 3 this.name = name; 4 this.age = age; 5 this.sex = sex; 6 function sss () { 7 a++; 8 console.log(a); 9 } 10 this.say = sss; 11 } 12 var oPerson = new Person(); 13 oPerson.say();//1 14 oPerson.say();//2 15 var oPerson1 = new Person(); 16 oPerson1.say();//1
1 var x = 1, y = z = 0; 2 function add(n){ 3 return n = n + 1; 4 } 5 y = add(x); 6 function add(n){ 7 return n = n +3; 8 } 9 z = add(x); 10 //x,y,z 1 4 4 函数整体提升(两个函数一样的)
1 //计算字符串的长度,字母数字为一个,汉字为两个。 2 //解法一 3 var str = ‘hello word 饭局‘ 4 // var count = str.length; 5 // for(var i = 0; i < count; i++){ 6 // if(str.charCodeAt(i) > 255){ 7 // count ++; 8 // } 9 // } 10 // console.log(count)// 15 11 //解法二 12 var code = 0; 13 for(var i = 0 ; i<str.length; i++){ 14 if(str.charCodeAt(i) > 255) { 15 code +=2; 16 }else{ 17 code ++; 18 } 19 } 20 console.log(code)//15
原文:https://www.cnblogs.com/yqyf/p/12409129.html