js中的对象和函数

对象 object(属性和方法的集合)

一、创建
1.对象字面量

var o={
			key:value,
				key2:value2
			}
  1. 构造函数
var o=new Object();
				o.name='lisi';
				o.age=20;

二、访问对象属性
1.点操作符

console.log(o.name);

2.[]
主要用于对变量的访问和复杂的标识符
变量不加"" ,其他的都要加

console.log(o["name");
console。log(o[name]);//参考for in

三、删除对象属性
delete o.name
四、检测属性
1.in:检测当前属性是否为对象的私有或继承属性,如果不是返回false
2.hasOwnProperty:检测当前属性是否为对象的私有属性,对于继承属性返回false
3.PropertyIsEnumerable:检测当前属性是否是该对象的私有属性

 var o={
			name:'lisi',
			age:20,
			gender:'men'
		}
	    console.log("name" in o)//true
        console.log(o.hasOwnProperty("name"))//true
        console.log(o.hasOwnProperty("constructor"))//false
        console.log(o.propertyIsEnumerable("name"))//true
        console.log(o.propertyIsEnumerable("constructor"))//false

五、对象序列化
1.JSON.stringify:将对象类型转换为json字符串
2.JSON.parse():将json字符串转换为对象 (转换后的对象和原对象不是一个对象)
六、构造函数和原型对象
1.特点
所有的函数都有一个原型对象,所有的对象都要一个constructor属性
prototype:原型对象
constructor:构造函数
2.静态属性/方法
声明在函数本身内部,只能函数本身调用
①Object.assign(a,b):将b对象合并到a对象中 (没有创建新的,如果有相同属性,b替换a的属性)
②Object.keys():当前对象的所有属性名所组成的数组
③Object.values():当前对象的所有属性值所组成的数组
④Object.defineProperty(obj,key,{}):定义属性
大括号里面的内容:
a.基础属性描述:
value:设置属性值
writable:是否可修改,默认false(会代码提升,修改后的value会使之前的也改变)
enumerable:是否可遍历。默认false
configurable:是否可配置/删除,默认false
b.存取操作符:
不能和value同时使用
set:function 设置 this._gender _表示隐藏属性
get:function 获取/打印 return this._gender

3.非静态属性/方法
声明在函数的原型对象中,所有的实例对象都可以调用
constructor:构造者
toString()
valueOf()
hasOwnProperty()

函数 (函数是特殊的对象)

一、函数
1.普通函数:

function say(){}
say();

2.转换函数
Number()
3.构造函数 (建议首字母大写)


var o=new Object()
o.name="lisa"

二、创建
1.函数字面量
(function(){}) () 匿名函数 需要立即执行否则找不到(没有函数名,本身当作一个函数名)

var say=function(){}
say();//say是他的名字

2.函数的声明

function say(){}
say();

3.函数字面量和函数的声明的区别:function可以解析提前,先解析函数的声明,并且赋值,var可以声明提前,但是不赋值
三、函数的调用
1.函数名(参数)
2.new 函数名():普通函数用new会永远得到一个空对象,因为new一般为构造函数
3.apply()
4.call()
四、函数的参数
形参
实参

function say(a,b){
			console.log(a+b);
		}

		say(1234);
                                  

a,b 为形参
1, 2,3,4为实参
特点:形参个数和实参个数不一致,并且数据类型不限,js中没有重载概念,只要函数名相同,即为重写
五、函数的内部属性
1.arguments:类数组对象 (用来保存当前拥有arguments对象的函数的实参的
length:实参的个数
callee:从函数内部指向当前函数 (用arguments.callee来代替用函数名来调用,直接在内部调用)

//解析顺序:
//1.var a;var b;
//2. 1-->arguments[0]
    ....
    5--->arguments[4]
  //3.arguments[0]--->a
    arguments[1]--->b
function say(a,b){
  console.log(arguments); // arguments{}
  console.log(arguments.length);//4
  }
  say(1,2,3,4)

2.this 是函数赖以生存的环境对象
①何时确定:当拥有当前this的函数被调用时确定
②this指向谁:谁调用当前拥有this的函数,那么this就指向谁

var length=10;
        function enjoy(){
            console.log(this.length);
        }

        var stu={
            length:20,
            enjoy:enjoy,
            say:function(fun){
                console.log(this.length);
                fun();}
            }
             stu.say(enjoy);   //20  10

六、作为值的函数和作为返回值的函数
1.作为值的函数

function say(){
       console.log(this);
       }
function getSay(fn){
     fn()
    }
 getSay(say);//必须有函数值

2.作为返回值的函数

function say(){
				return function(){
					console.log("hello");
				}
			}
			var a=say();
			a();

七、函数的属性
say.length:返回形参的个数
调用函数:
修改函数内部的this值指向
say.call(this,实参列表) (想让this指向谁就指向谁)
say.apply(this,[实参列表])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值