Edit in JSFiddle

///////     演示可写入的computed   ///////////

function AppViewModel() {
    var self = this;

    self.firstName = ko.observable('Bob');
    self.lastName = ko.observable('Smith');
 
    //这是一个可以写的计算属性
    self.fullNameWriteable = ko.computed({
        read: function () {
            return self.firstName() + " " + self.lastName();
        },
        write: function (value) {
            var lastSpacePos = value.lastIndexOf(" ");
            if (lastSpacePos > 0) { // Ignore values with no space character
                self.firstName(value.substring(0, lastSpacePos)); // Update "firstName"
                self.lastName(value.substring(lastSpacePos + 1)); // Update "lastName"
            }
        },
        owner: self
    });
    //测试从js中修改计算属性
    self.modifyFullName = function () {
        self.fullNameWriteable("newFistName newLastName");
    };
}
var model = new AppViewModel();

ko.applyBindings(model, document.getElementById("Demo1")); 
<h1>演示可写入的computed </h1>
<hr />
<ul>

    <li  class="Point">
   
     <li  class="Point">
    1、<b  class="PointTitle">编写可以<span class="KeyWord">写</span>的<span class="KeyWord">"computed"</span>属性</b><br />
        <ul class="PointDesc">
            <li>computed属性一般是由其他属性计算而来</li>
            <li>所以一般情况下computed属性是“只读”的</li>
        </ul>
        <div  class="PointDemo" id="Demo1">
        firstName:<input type="text" data-bind="value: firstName" /><br />
        lastName:<input type="text" data-bind="value: lastName" /><br />
        可以编辑的fullName:<input type="text" data-bind="value: fullNameWriteable" /><br />
        js中修改fullName:<input type="button" data-bind="click: modifyFullName" value="点击修改fullName" />
        </div>
        <!--下面写一些特殊的提示信息-->
        <div class="PSFrame">
        注意:这里“计算属性”可以编辑,并且把自身的变化“反向通知”到所监控的其他属性。非常强大<br />
        并且,“计算属性”本身可以在js中被修改,这种修改一样可以反馈到其他监控链条上的对象
        </div>
        <hr />
    </li>

</ul>
<hr />
body
{
    background-color: #e3e5d4;
}
.Point
{
    margin: 20px,0,0,0;
}
.PointTitle
{
    color:#0d8d0d;
}
.KeyWord
{
    color:Red;
}
.PointDesc
{
    font-family: Arial;
    font-size: 15px;
    color:#09acb8;
}
.PointDesc li
{
    margin: 10px,0,0,0;
}

.PointDemo
{
    border-style:double; 
    border-color:#dcd559;
    min-height:100px;
    font-family: Corbel;
    font-size: 20px;
    color: #00174f;
}
.PSFrame
{
    border-style: dashed; 
    border-color:#78e6ef;
    font-family: Corbel;
    font-size: 20px;
    font-style:italic;
    color: #b86c00;
}
.error {
    color:Red;
    
}
.Notice
{
    font-weight: bold;
    font-family:Bodoni MT Black;
    color: #cd0707;
}

input[type="text"]
{
    min-width:250px;
}
select
{
    min-width:400px;
}

External resources loaded into this fiddle: