新手求解js的对象,属性,方法,的关系。内有具体例子

例子:1.自定义函数名() 2.对象名.javascript自带函数名()
如:
例1
function sum1(a,b){return a+b;}
alert(sum1(2,3));//没看见有对象名
例2
var x = “abcd”;
alert(x.indexOf(“a”,0))//x是对象名

解释:例子1不需要使用 函数名前面有个“句号” 句号前面有“对象”名这种结构就可以执行
例子2则必须使用这种结构
问题:1.在例子2中 这个js自带函数和对象名的从属关系是什么?
2.在教程中看过实例。自定义对象内可以定义和这个对象相关的不同属性名
那么在例子2中的函数是否在这个对象内被定义了。
3. 函数是处理数据的。 如果问题2成立了。那么在例2中是不是对象还定义了这个函数处理的数据的种类?
4.是不是像x.indexOf(“a”,0)这种使用方法的函数必须跟随对象名?
5.对于图片对不对?
关于例子2的图片

对于例1做一些解释:

通过 var x = function() {} 或者 function x() {} 这种形式定义的函数不属于任何对象, 只可以在它所属的闭包范围内通过 x() 这种形式来执行.

全局对象(浏览器对象模型中是 Window 对象)所属的函数或属性可以省略全局对象名, 即 window.alert() 可以简写为 alert()


1.在例子2中 这个js自带函数和对象名的从属关系是什么?

indexOf 这个方法是在 String 的原型中被定义的, indexOf 只是被 string 对象所"继承".


2.在教程中看过实例。自定义对象内可以定义和这个对象相关的不同属性名。那么在例子2中的函数是否在这个对象内被定义了。

没有.

var x = "abcd" 这里 x 是一个 string 对象(即 typeof x == 'string'), 因此它继承了 String 的原型中定义的所有方法和属性(例中 indexOf 是在 String 的原型中定义的, 即 String.prototype.hasOwnProperty("indexOf")).

在 javascript 原型链继承模型中, 对象可以通过 "." 运算符调用它本身或者原型链中任一对象中定义的函数.


3. 函数是处理数据的。  如果问题2成立了。那么在例2中是不是对象还定义了这个函数处理的数据的种类?

没有. 另外, 问题2不成立.

javascript 是弱类型的脚本语言, 函数中的参数不必定义类型, 甚至不用确定个数. 


4.是不是像x.indexOf(“a”,0)这种使用方法的函数必须跟随对象名?

不是的, 可以通过 Function.prototype.call 或者 Function.prototype.apply 来更改 函数中 this 的指向(可以认为是操作对象)

例如

var indexOf = String.prototype.indexOf;

indexOf.call(x, "a", 0);

indexOf.apply(x, [ "a", 0 ]);


5.对于图片对不对?

图片不完全正确.

参考下面的例子和图片

function Point(x, y) {

    // Point 拥有 x 和 y 两个属性

    this.x = x;

    this.y = y;

}

Point.prototype = {

    // Point 从它的原型中"继承"了 distanceFromOrgin 方法

    distanceFromOrgin: function(p) {

        return Math.sqrt((p.x - this.x) * (p.x - this.x) + (p.y - this.y) * (p.y - this.y));

    }

};

// p1 诞生, 它拥有 Point 以及它的各级原型中定义的所有方法, 包括 Object 的原型中定义的 toString 方法

var p1 = new Point(3, -4);

温馨提示:答案为网友推荐,仅供参考
相似回答