日期:2014-05-18  浏览次数:20449 次

关于JS的一点疑惑
- -对于JS不是很熟练,最近开始学习和掌握关于JS闭包,继承,扩展这一块。遇到一个问题
公司封装好了一些js文件 
源文件是这样的,这里只列举一个简单的JS函数
JScript code

(function() {
    var As ={

            //格式化数字
            AsNumber.prototype.FormatNumberValue = function(precision) {
                var numberValue = this.value.toString();
                var nArr = numberValue.split(".");

                var reg = /^[-]?[\d]+$/gim;
                if (!reg.test(nArr[0].toString())) {
                    return NaN;
                }

                if (nArr.length > 1) {
                    reg = /[^\d]/gim;
                    if (reg.test(nArr[1].toString())) {
                        return NaN;
                    }
                }

                numberValue = nArr[0].toString();

                //精度
                var nPrecision = parseInt(precision);
                if (!isNaN(nPrecision) && (nPrecision > 0)) {
                    var decimalValue = (nArr.length > 1) ? nArr[1].toString() : "";

                    numberValue += this.FormatPrecision(decimalValue, nPrecision);
                }

                return numberValue;
            }

};
})();


我自己将这一段抠出来,按照原生态的JS办法执行调用 但是报错说找不到this.value.toString()
我想知道以上这段JS该如何调用到页面?弄的我有点混淆了

------解决方案--------------------
对于JS不了解,我也准备学习了! 友情帮顶~
------解决方案--------------------
在后台调用的?你设置断点跟踪下js
------解决方案--------------------
this.value.toString()就是你要格式化数字,类似C#的"aa".tostring() "aa"就是这个THIS
------解决方案--------------------
把调用方法贴一下
------解决方案--------------------
你要把这代码抠出来 ,就写个

function func(x)
{

用x替换掉原来的this
}
------解决方案--------------------
谁知道你this是什么东西,是参数precision么亦或是html控件的值
------解决方案--------------------
var numberValue = this.value.toString();
改为
var numberValue = 具体的值
试试

------解决方案--------------------

C# code


function aa(bb,precision){
 var numberValue = bb.toString();
                var nArr = numberValue.split(".");

                var reg = /^[-]?[\d]+$/gim;
                if (!reg.test(nArr[0].toString())) {
                    return NaN;
                }

                if (nArr.length > 1) {
                    reg = /[^\d]/gim;
                    if (reg.test(nArr[1].toString())) {
                        return NaN;
                    }
                }

                numberValue = nArr[0].toString();

                //精度
                var nPrecision = parseInt(precision);
                if (!isNaN(nPrecision) && (nPrecision > 0)) {
                    var decimalValue = (nArr.length > 1) ? nArr[1].toString() : "";

                    numberValue += aa(decimalValue, nPrecision);
                }

                return numberValue;
}