使用typeof关键字下面给出一份演示
<script type="text/javascript">var d={
a:10,
b:function(){console.log("11")}
}
console.log(typeof d.b)
//在控制台看到是打印的function
if(typeof d.b=="function"){
alert("该属性是一个函数")
}
</script>
这不是很方便吗?这样就可以直接被函数做参数传到需要回调的其他函数中使用,java中的接口调用需要实例化,js就不需要了呀。函数自定义方法,其实可以把你说的函数看做java中的类。比如:
function Example(name){this.name=name}
Example.prototype.setName=function(name){
this.name=name
return this
}
Example.prototype.getName=function(){
return this.name
}
new Example('name').getName()//name
new Example('name').setName('name1').getName()//name1
无论是js中的Array,String……都有类似的prototype类型描述对象,当这些类型实例化以后可直接调用prototype中定义的方法或属性,也可覆盖。在实例化中prototype会被简单化成__proto__对象,可以通过console.log进行观察。关于继承,所有的js对象都有一个顶级的被继承对象,Object,方法有很多,通常被提到的就是定义类型函数时给prototype赋个你想继承的类型的实例化object,但这种方法很蠢,自己看书,搜索,实践吧,手机打字太累了。
所有的函数都是一个对象,所有的对象,都可以用构造函数创建。
凡是构造函数都是可以new的,也就是说都可以成为对象,这里当然要给Function类型的对象取个名字,它就叫“Function对象”。
函数
function fun(){// 定义变量时没有使用关键字
var atguigu = "this is atguigu"
// 在函数作用域访问变量
console.log( atguigu )
}
fun()
构造函数----》new成为Function对象
function Fun() {this.name = '小王'//定义属性
this.age = '18'//定义属性
this.fn = function () {
return 1999
}
}
对象
var obj1 = {name : '手速快',//属性
age : 27,//属性
fun :function () {//方法
return 10
}
}
console.log(obj1)